0

我试图在我的新项目中实施 CSRF 保护。我使用为每个表单创建会话令牌来执行相同的操作,并且该令牌存储在表单的隐藏字段中。每次提交表单时,我都会检查 POST 中的令牌和会话中的令牌是否相同。如果它们相同,则完成所需的操作并更新会话令牌。

它工作得很好,但是当我们刷新提交的页面时会出现实际问题。然后发生令牌不匹配。

我的问题是,为每个表单使用单个令牌并且不为每个表单提交更新令牌是否安全?这能防止 CSRF 吗?

4

1 回答 1

0

是的,不需要更新 CSRF 令牌。它只需要每个用户会话都是唯一的。

由于攻击者无法读取隐藏表单字段的值,因此可以在会话期间重复使用相同的值。更新此值不会带来额外的安全性。

但是,它绝对应该是每个用户会话的唯一值。不同的用户应该有不同的令牌,如果同一个用户再次登录,最好让前一个令牌过期。

于 2014-01-06T15:28:10.560 回答