Могу ли я принять почтовый запрос только с доменного имени?
Я использую способ оплаты в своем заявлении, и сайт банка отправляет обратно почтовый запрос с информацией о платеже, такой как статус, идентификатор платежа...
Но чтобы быть уверенным, что запрос не от кого-то, кто пытается сделать что-то плохое, могу ли я принять только запрос от моей банковской системы? Я ищу что-то, чтобы проверить в запросе на это действие / контроллер только от mybank.com и пропустить другие.
2 ответа
Решение
post 'yourpath', to: 'controller#action', constraints: { protocol: 'https://', host: 'yourbank' }
Вы можете попробовать проверить реферер и отклонить запрос, который не совпадает:
if request.referer.starts_with?('https://your.bank/') # or request.env['HTTP_REFERER']
# do stuff
else
# render error
end
Но не: а) рефереры не защищены. Каждый может подделать их. б) ваш банк, скорее всего, не отправил реферала.
Я бы исследовал другие решения: разрешать только запросы от ip диапазона ваших банков и просить банк аутентифицироваться с секретом.