java - 让 csrf token 在用户 session 中 15 分钟后过期还是直接删除?

标签 java security session csrf

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

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

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

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

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

最佳答案

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

关于java - 让 csrf token 在用户 session 中 15 分钟后过期还是直接删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566780/

相关文章:

https - 从HTTP到HTTPS,越快越好?

java - 无法使用 exec-maven-plugin 执行 Maven 多模块项目

java - NavigationDrawer onCreate 空 Activity

java - 从 JTable 拖放到 JLayeredPane

session - java中 session 超时删除cookie

php - 仅在 session 已设置且变量 == 时显示页面

javascript - 如何在 express、couchDB 和 node.js 中使用 session

java - 如何识别文本文件中的字符并将其转换为 map 中的对象?

c# - 使用 BouncyCaSTLe 签署 X509 证书 - 无效的数字签名

security - 刷新 token 轮换 - 真的够了吗?