【发布时间】:2012-01-11 02:47:30
【问题描述】:
我正在尝试集成一种方法来为我的应用程序中的每个表单添加一个哈希令牌。我想以此实现目标:
- 防止 csrf 攻击
- 防止用户在提交表单后重新加载页面时重新提交表单
现在,我认为这样做的概念应该很简单:
- 我生成一个唯一的哈希并将其保存到 cookie 中
- 我使用生成的哈希在表单中创建了一个隐藏字段
- 在处理表单中的 $_POST 数据之前,我会验证表单中的哈希值是否与 cookie 中的值匹配。
到目前为止一切顺利,现在我真正陷入困境的是以下场景:
如果用户使用我的应用程序打开另一个选项卡会怎样。每次加载页面时,都会重新生成哈希值。从而使第一个选项卡中表单的哈希值无效。
【问题讨论】:
-
为每个用户存储一个当前有效令牌的列表怎么样?