在最强大的CSRF保护之间,有表单令牌保护。我对这个方法的问题是关于可用性:如果用户打开包含表单的多个页面,使用该令牌,则生成多个令牌,但只有最后打开的页面才能成功发送表单,所有其他都会给出错误
我想到了2个解决方案:
可是:
因此,您是如何解决这个问题的?
PS我正在开发的网站实际上是PHP中的电子商务,虽然汇款将通过外部提供商(如paypal)进行管理,但我认为这样可以为我的服务提供良好的安全保障。答案 0 :(得分:2)
您无需在数据库中存储令牌。
相反,您应该在Cookie中包含相同的标记;跨站点攻击者无法读取或设置cookie 只要您在Cookie中获得与POST表单相同的令牌,就可以了。
为了提高安全性,您可以使用键控HMAC哈希对其进行哈希处理,并验证哈希值以确保令牌来自您的服务器。
您还可以为每个用户制作令牌。