1

今天我在我的 web 应用程序中添加了 crsf 保护。

  • 当打印 html for 时,我生成了随机令牌并将其放在隐藏字段和用户会话中。
  • 提交表单时,我读取隐藏的表单字段并将其与用户会话中的令牌进行比较。
  • 如果令牌匹配表单提交可能会继续。如果失败,则会显示错误。

为了实现这一点,我使用了在网络上找到的实现。提交表单后,此实现不会从会话中删除令牌。我决定在提交表单后从会话中删除令牌,因为不再需要它。

我现在遇到的事情是当我提交表单然后我按下浏览器的后退按钮并再次提交表单时出现错误(因为令牌已从用户会话中删除,但浏览器仍然在浏览器中保存旧表单缓存并与旧令牌一起显示)。

为了防止这种情况发生,我想在 15 分钟后从用户会话中删除令牌。这样他应该能够返回并重新提交表格。我想知道这是否是解决该问题的有效且安全的解决方案?

4

1 回答 1

2

除了防止 CSRF 之外,令牌还可以帮助您防止双重表单提交。当用户两次提交相同的表单时,我怀疑您的应用程序是否满意。因此,可以在第一次提交时删除令牌并在第二次提交时显示一条消息:“表单提交无效或已处理......”

于 2013-05-15T16:23:30.547 回答