2013-10-17 49 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

相關問題