匿名评论/帖子表单是否需要csrf令牌?如果不是为什么SO使用它以及如何实现它?

ali*_*ali 6 security csrf csrf-protection

有一些讨论这样的SO声称CSRF保护不要求匿名的形式.查看stackoverflow html代码,当未登录时,您可以看到在作为匿名用户发布时为其答案框设置了csrf令牌.

  1. 这个csrf令牌如何帮助保护匿名用户?
  2. csrf令牌应与用户会话ID相关联.什么是匿名用户的等价物?IP地址?

Nei*_*ine 3

此 csrf 令牌如何帮助保护匿名用户?

经验法则是,任何状态更改操作都需要防止 CSRF 攻击。因此,如果您的表单是状态更改操作,则应该对其进行保护。例如,这个答案描述了为什么需要在登录表单上使用 CSRF 保护(请记住用户登录时是匿名的)。我见过您也想保护的匿名投票表格。就投票表单而言,CSRF 令牌保护站点的完整性(无论匿名投票站点具有何种完整性)。

另一方面,某些表单不需要 CSRF 保护。显然,在 JavaScript 中处理且从不发送到服务器的表单不需要 CSRF 保护。对于执行基本实用程序(例如语言翻译表单)的表单也是如此。

csrf 令牌应与用户会话 ID 相关联。对于匿名用户来说,相当于什么?IP地址?

大多数 Web 框架都为匿名用户提供有状态会话。例如,PHP 使用$_SESSION变量。他们通常会在用户浏览器中将 cookie 设置为会话 ID。您将使用有状态会话来存储 CSRF 令牌的服务器端副本。