好的,我希望我在这里错过了一点。
很长一段时间,MVC有一个Html.AntiForgeryToken()
帮助器,可以将一个标记插入到表单中,以保护从另一个网站提交的表单。 (CSRF)
帮助器将产生隐藏的输入,如:
<input type="hidden" value="cXnXkzw2..." name="__RequestVerificationToken">
在服务器端已知,并用于验证POST
。听起来不错。
但是,如果一个人努力编写使用网站身份验证cookie和恶意POST
的攻击脚本,那么先执行前一个GET
检索的难度有多大这个隐藏的输入AntiForgeryToken
并在POST
?
换句话说; AntiForgeryToken
如何帮助?
答案 0 :(得分:1)
简单的答案是,它没有。
由于相同的原始策略,防伪签名(一个作为cookie,另一个作为隐藏表单字段)不应该被恶意页面/攻击者访问。这意味着攻击者无法访问其他网站上的内容。
如果它是可访问的,那么这完全损害了令牌并且它们变得多余。如果启用了跨域,则可能会发生您的建议。
我希望这能回答你的问题Stefan。