在最强大的 CSRF 保护之间,还有表单令牌保护。我对这种方法的问题是关于可用性:如果用户打开多个包含表单的页面,使用令牌,会生成多个令牌,但只有最后打开的页面可以成功发送表单,所有其他页面都会出错.
我想了2个解决方案:
- 在整个会话期间保留唯一令牌。
- 将所有生成的令牌存储在会话中。
但:
- 这是更现实的解决方案,但不太安全。
- 这会产生很大的资源开销,因为用户可以打开许多页面,而我必须存储所有生成的令牌。
因此,您是如何解决这个问题的?
PS 我正在开发的网站实际上是 PHP 中的电子商务,虽然汇款将通过外部提供商(如贝宝)进行管理,但我认为正确地为我的服务提供了良好的安全性。