我在我的应用程序上实施付款方式,银行网站发回一个帖子请求,其中包含有关付款的信息,例如状态,付款ID ...
但是为了确保请求不是来自试图做坏事的人,我能否只接受来自银行系统的请求?我正在寻找一些东西来检查这个动作/控制器的请求只来自mybank.com并跳过其他人。
答案 0 :(得分:4)
post 'yourpath', to: 'controller#action', constraints: { protocol: 'https://', host: 'yourbank' }
答案 1 :(得分:0)
您可以尝试检查引用并禁止不匹配的请求:
if request.referer.starts_with?('https://your.bank/') # or request.env['HTTP_REFERER']
# do stuff
else
# render error
end
但不是:a)推荐人不安全。每个人都可以伪造它们。 b)您的银行很可能没有发送推荐人。
我会调查其他解决方案:只允许来自银行ip范围的请求,并要求银行进行密码验证。