Могу ли я принять почтовый запрос только с доменного имени?

Я использую способ оплаты в своем заявлении, и сайт банка отправляет обратно почтовый запрос с информацией о платеже, такой как статус, идентификатор платежа...

Но чтобы быть уверенным, что запрос не от кого-то, кто пытается сделать что-то плохое, могу ли я принять только запрос от моей банковской системы? Я ищу что-то, чтобы проверить в запросе на это действие / контроллер только от 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 диапазона ваших банков и просить банк аутентифицироваться с секретом.

Другие вопросы по тегам