UPD:在security.stackexchange.com上提出了同样的问题,我得到的答案不同。请关注那里,以获得正确答案!
我正在运行一个相当大的网站,每天有数千次访问,以及相当大的用户群。
自从我开始迁移到 MVC 3 以来,我一直将 AntiForgeryToken 置于多种形式中,用于修改受保护的数据等。
其他一些形式,比如登录/注册现在也使用 AntiForgeryToken,但我开始怀疑他们的需求,原因有几个......
- 登录表单要求发布者知道正确的凭据。我真的想不出 csrf 攻击会从中受益的任何方式。特别是如果我检查请求是否来自同一主机(检查引荐来源标头)
- 每次加载页面时,AntiForgeryToken 令牌都会生成不同的值。如果我在登录页面打开了两个选项卡,然后尝试发布它们,第一个将成功加载。第二个将失败并出现 AntiForgeryTokenException(首先加载两个页面,然后尝试发布它们)。使用更安全的页面 - 这显然是一个必要的邪恶,对于登录页面 - 似乎有点矫枉过正,只是自找麻烦:S
可能还有其他原因导致人们在他们的表单中使用/不使用令牌。我是否正确假设在每个帖子表单中使用令牌都是不好的/矫枉过正的,如果是这样 - 什么样的表单会从中受益,哪些肯定不会受益?