2013-10-17 110 views
3

我为一个非常简单的提交表单创建了一个新的asp.net web窗体(具有母版页)应用程序。我使用Visual Studio 2012创建了Web项目,并在site.master.cs中添加了防止跨站点脚本伪造的代码。反xsrf令牌验证失败

但是在测试时,如果用户标志和无效了几分钟,然后点击退出按钮,我们得到这个错误(在site.master.cs)

Validation of Anti-XSRF token failed. 

     Exception Details: System.InvalidOperationException: Validation of Anti-XSRF token failed. 

Source Error: 
Line 61:      || (string)ViewState[AntiXsrfUserNameKey] !=  

    (Context.User.Identity.Name ?? String.Empty)) 

Line 62:     { 

Line 63:      throw new InvalidOperationException("Validation of Anti-XSRF token failed."); 


    Line 64:     } 

Line 65:    } 

我们能为了避免这种情况吗?

+0

这不是特别安全。你应该使用ASP.Net的内置CSRF保护。 – SLaks

+0

是的,即时通讯并不是说,删除它,但如何防止出现这个错误 – cableload

回答

1

这完全取决于你。处理错误,只要你喜欢.. 它很可能在你的情况下,你重新启动Web服务器和你的viewstate死亡或做这不知情。

你在使用欧文吗?如果您使用的是Owin,则会出现一个会破坏Session和Viewstate的错误。在认证用户之前,创建一个Session变量(任何事物),例如Session [“Blah”] = test。

只需添加代码以处理错误(将用户重定向到其他页面)。

+1

我知道这是旧的,但你能扩展为什么这是一个错误,它在哪里,如何纠正它(设置会话变量根本无法工作 - 在母版页或任何网页表单中)?这个问题是一场噩梦,我们只能通过禁用该功能来解决这个问题(对于一个真实的网站来说太麻烦了)。 – MC9000

相关问题