今天我在我的 web 应用程序中添加了 crsf 保护。
- 当打印 html for 时,我生成了随机令牌并将其放在隐藏字段和用户会话中。
- 提交表单时,我读取隐藏的表单字段并将其与用户会话中的令牌进行比较。
- 如果令牌匹配表单提交可能会继续。如果失败,则会显示错误。
为了实现这一点,我使用了在网络上找到的实现。提交表单后,此实现不会从会话中删除令牌。我决定在提交表单后从会话中删除令牌,因为不再需要它。
我现在遇到的事情是当我提交表单然后我按下浏览器的后退按钮并再次提交表单时出现错误(因为令牌已从用户会话中删除,但浏览器仍然在浏览器中保存旧表单缓存并与旧令牌一起显示)。
为了防止这种情况发生,我想在 15 分钟后从用户会话中删除令牌。这样他应该能够返回并重新提交表格。我想知道这是否是解决该问题的有效且安全的解决方案?