防伪例外:未提供或无效的所需防伪令牌

4
我有一个MVC2应用程序。 我正在尝试使用AntiForgeryToken助手实现CSRF攻击的防御。
我正在使用Steve Sanderson的博客来实现:http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/ 当我在NEW MVC2项目中实现它时,它有效。 但是当我将相同的代码放入我的REAL应用程序中时,它总是抛出此异常:“未提供或无效的所需防伪令牌。”
这是我的控制器代码:
[ValidateAntiForgeryToken]
public ActionResult SubmitUpdate()
{

    // Something goes here
    return View();
}

视图中的代码:

<% using (Html.BeginForm("SubmitUpdate", "Test"))
   {%>
   <%= Html.AntiForgeryToken() %>
       <input type="submit" value="Submit" />
<% } %>

这两个应用程序没有任何区别,只是真正的应用程序使用ADFS进行身份验证。我错过了什么?非常感谢任何帮助。谢谢!


生成的HTML是什么? - Nate Zaugg
你能解决这个问题吗?我在一个服务器上突然遇到了同样的问题。 - Randall Hoffpauir
2个回答

1

你尝试过删除浏览器的Cookie然后再试一次吗?


是的,我已经尝试过了。清除缓存、删除所有的Cookies、重新启动IIS、重启我的电脑等等。 - user629161
这是它所生成的HTML。 <input name="__RequestVerificationToken" value="O+c5O59wHPwKq3TO/VVHmVLbHbDBG1TTGbLKTuNZf+602IjkoRSnRX7GjMXnw5VnyNtfy4NjAWZaZ+uNv1ni4b6kP3ru1r51K7i4RgKV/TBxSY2ZsUDr6qGAC+vHjvG/ZE08UQ==" type="hidden"><div>这是一个索引页面 <p>名称<input id="txtName" name="txtName" type="text"></p> <p><input value="提交" type="submit"></p> </div> - user629161

0

答案可能在回答这个问题中,该问题涉及KB补丁以及确保所有服务器(农场/集群等)之间的机器密钥是静态的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接