.net Html.AntiForgeryToken如何保护具有前面GET的帖子

.net Html.AntiForgeryToken如何保护具有前面GET的帖子,.net,asp.net-mvc,security,csrf,.net,Asp.net Mvc,Security,Csrf,好吧,我希望我在这里漏掉了一点 长期以来,MVC有一个Html.AntiForgeryToken()helper将令牌插入表单,以保护从其他网站提交的表单。(CSRF) 助手将生成一个隐藏的输入,类似于: <input type="hidden" value="cXnXkzw2..." name="__RequestVerificationToken"> 这在服务器端是已知的,用于验证POST。听起来不错 但是,如果有人试图编写攻击脚本,使用网站的身份验证cookie和恶意的P

好吧,我希望我在这里漏掉了一点

长期以来,MVC有一个
Html.AntiForgeryToken()
helper将令牌插入表单,以保护从其他网站提交的表单。(CSRF)

助手将生成一个隐藏的输入,类似于:

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

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

但是,如果有人试图编写攻击脚本,使用网站的身份验证cookie和恶意的
POST
,那么首先执行前面的
GET
来检索此隐藏输入
AntiForgeryToken
并在
POST
中使用它会有多困难


换言之;
AntiForgeryToken
在这里有什么帮助?

简单的答案是,它没有

由于同源策略,恶意页面/攻击者不应访问防伪令牌(一个作为cookie,另一个作为隐藏表单字段)。这意味着攻击者无法访问其他站点上的内容

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


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

啊,除了身份验证cookie之外,还有一个cookie(或相同的身份验证cookie),其中包含有关令牌值的信息。。。这是有道理的。是的-服务器将在服务器上验证这两个令牌。那么iFrame也安全吗?(我必须承认;我对iFrame没有太多经验)iFrame的工作方式与仍然向不同域发出请求的方式相同,并且会阻止攻击者由于跨域限制而请求内容。因此,令牌将不会公开。