Html.AntiForgeryToken如何使用前面的GET来防止POST

时间:2014-01-08 09:31:50

标签: .net asp.net-mvc security csrf

好的,我希望我在这里错过了一点。

很长一段时间,MVC有一个Html.AntiForgeryToken()帮助器,可以将一个标记插入到表单中,以保护从另一个网站提交的表单。 (CSRF)

帮助器将产生隐藏的输入,如:

<input type="hidden" value="cXnXkzw2..." name="__RequestVerificationToken">

在服务器端已知,并用于验证POST。听起来不错。

但是,如果一个人努力编写使用网站身份验证cookie和恶意POST的攻击脚本,那么先执行前一个GET检索的难度有多大这个隐藏的输入AntiForgeryToken并在POST

中使用它

换句话说; AntiForgeryToken如何帮助?

1 个答案:

答案 0 :(得分:1)

简单的答案是,它没有。

由于相同的原始策略,防伪签名(一个作为cookie,另一个作为隐藏表单字段)不应该被恶意页面/攻击者访问。这意味着攻击者无法访问其他网站上的内容。

如果它是可访问的,那么这完全损害了令牌并且它们变得多余。如果启用了跨域,则可能会发生您的建议。

我希望这能回答你的问题Stefan。