好了,所以我想在這裏不創建一個重複的,但我意識到這個問題已經被排序的前處理。
我已經做了一堆閱讀上的錯誤:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
我開始的錯誤之後,我們升級了網絡監控軟件和SQL版本。
該頁面是一個ASP.NET 4.0 web表單,它用來顯示在網站外部,用C#語言編寫,帶有一點JavaScript和一點SQL。它還大量使用.NET的圖表形式(如圖表上的六個圖表區域,每個圖表都有通過SQL動態生成的多個系列)。我們從SQL Server 2008R2的免費版本開始試用完整的SQL Server 2012實例,並將我們的SolarWinds Orion版本更新爲NPM 10.6。
該代碼是一個大型圖表程序,用於跟蹤我們每個網絡上平均的各種統計數據的健康狀況。問題是,他們要求提供自動更新的'滾動圖表'。我正在使用表單刷新而不是元數據或完整回發,因爲有各種各樣的變量允許圖表停留在特定的統計信息,網絡,頁面和時間窗口中,以便當用戶離開它時,它將刷新並保持他們最初查看的視圖。如果不超過5分鐘,它會不斷更新。所有這些值都存儲在ViewState中。 (最初更糟糕的是,它被存儲在頁面上的隱藏文字中)。
更新軟件並沒有神奇地將它變成網絡農場或羣集,我們沒有虛擬環境,儘管我們可能會很快。
研究
我理解這個問題是由ViewState中不方便時刷新,並導致關鍵的驗證失敗造成的,因爲在頁面加載了與驗證算法同步。我見過很多類似的問題和答案像這樣的:
ASP.NET Validation of viewstate MAC failed
Validation of viewstate MAC failed when on page for 20+ minutes
ScriptResource error: am I being hacked?
http://aspadvice.com/blogs/joteke/archive/2006/02/02/15011.aspx
誠然,這是不面對客戶,但每微軟:
This attribute should never be set to false in a production Web site, even if the >application or page does not use view state. The view state MAC helps ensure the security >of other ASP.NET functions in addition to view state.
我的問題:
所有這些問題的答案似乎有相同的解決方案,我不相信這些都是很好的解決方案。我有什麼替代方案?我的上司,我不認爲從安全的角度來看,關鍵是好的。我願意調整代碼以存儲其他方式。我不得不在其他地方使用會話狀態,但我仍然對它不熟悉。在進行某種驗證之前,會不會出現與刷新類似的問題?我可以強制更新運行更慢嗎?我也看到了一些關於改變密鑰驗證發生的地方。從安全的角度來看,這個解決方案如何?