使用会话令牌实现 CSRF 保护
Posted
技术标签:
【中文标题】使用会话令牌实现 CSRF 保护【英文标题】:Implementing CSRF protection using a session token 【发布时间】:2014-01-23 12:29:19 【问题描述】:我试图在我的新项目中实施 CSRF 保护。我使用为每个表单创建会话令牌来执行相同的操作,并且该令牌存储在表单的隐藏字段中。每次提交表单时,我都会检查 POST 中的令牌和会话中的令牌是否相同。如果它们相同,则完成所需的操作并更新会话令牌。
它工作得很好,但是当我们刷新提交的页面时会出现实际问题。然后发生令牌不匹配。
我的问题是,为每个表单使用单个令牌并且不为每个表单提交更新令牌是否安全?这能防止 CSRF 吗?
【问题讨论】:
【参考方案1】:是的,不需要更新 CSRF 令牌。它只需要在每个用户会话中都是唯一的。
由于攻击者无法读取隐藏表单字段的值,因此可以在会话期间重复使用相同的值。更新此值不会带来额外的安全性。
但是,它绝对应该是每个用户会话的唯一值。不同的用户应该有不同的令牌,如果同一个用户再次登录,最好让之前的令牌过期。
【讨论】:
以上是关于使用会话令牌实现 CSRF 保护的主要内容,如果未能解决你的问题,请参考以下文章