ASP.NET 中的加密內容未解密,或是導致使用持續存在表單驗證 Cookie 或部署在 Web 伺服陣列中的網站發生錯誤

文章翻譯 文章翻譯
文章編號: 2431728 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

您將安全性更新 MS10-070 套用至部署在 Web 伺服陣列中、做為 Microsoft ASP.NET 網站的伺服器後,Web 伺服陣列中的部份伺服器或應用程式可能會遇到下列一或多個徵狀:
  • 無法解密資料
  • WebResource 或 ScriptResource 處理常式發生例外狀況
  • 使用表單驗證時發生驗證失敗
  • 發生「無效的 Viewstate」例外狀況
  • 嘗試解密資料 (例如表單驗證 Cookie) 時,發生「無法驗證資料」例外狀況
存取 ASP.NET 應用程式失敗時,系統會呈現發生應用程式例外狀況的狀態,類似下列的資訊也會記錄在應用程式記錄檔中。


訊息 1:

System.Web.HttpException:無法驗證資料。位於 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo, Boolean signData)

訊息 2:

事件類型:警告
事件來源:ASP.NET 2.0.50727.0
事件類別:Web 事件
事件識別碼: 1309
日期:日期
時間:時間
使用者:N/A
描述:
事件代碼: 3005
事件訊息:發生未處理的例外狀況。
例外狀況資訊:
例外狀況類型:HttpException
例外狀況訊息:無法驗證資料。

發生的原因

佈告欄 MS10-070 的安全性更新解決了 ASP.NET 中加密的預設行為變更問題。安裝安全性更新後,即使只有要求加密,新的預設行為也會在加密之外再額外執行驗證。這個預設行為會在已套用此更新的伺服器上變更加密的裝載。裝載包括檢視狀態和表單驗證的 Cookie。如果 Web 伺服陣列中只有部份伺服器有套用安全性更新,則不同的伺服器針對相同的裝載所使用的加密和解密方法將會有所差異,而這樣的行為差異將導致例外狀況。如果表單驗證 Cookie 在套用安全性更新前已持續存在系統中,但在套用安全性更新後仍在使用中,系統也會發生這樣的行為。

此外,不同的 Microsoft .NET Framework 2.0 服務套件版本所使用的加密和解密方法也不盡相同。因此,在已安裝安全性更新的 Web 伺服陣列環境中,擁有不同程度的 .NET Framework 服務套件會導致不同的加密裝載,並發生類似的解密失敗情形。

解決方案

請確定供應 ASP.NET 內容的所有伺服器符合下列情況:
  • 在 Web 伺服陣列中供應 ASP.NET 網站的所有伺服器都必須安裝安全性更新。如果有部份伺服器未安裝安全性更新,您必須將更新套用至這些伺服器。
  • 如果 MS10-070 安全性更新已套用至所有系統,在 Web 伺服陣列中執行某版 .NET Framework 2.0 的所有電腦都必須更新至相同程度的服務套件。如果伺服器的服務套件程度有不一致的情形,您必須將所有的伺服器更新為最新的服務套件,然後重新套用所有的安全性更新。因此,如果 Web 伺服陣列中有部份的伺服器是執行 .NET Framework 2.0 SP1,另一部份的伺服器是執行 .NET Framework 2.0 SP2,則在套用安全性更新至 Web 伺服陣列中的所有伺服器前,所有的 .NET Framework 2.0 SP1 伺服器都必須升級至 .NET Framework 2.0 SP2。
  • 請確定應用程式未使用加密資料,例如套用更新前已產生的表單驗證 Cookie。套用安全性更新後,先前已加密的資料必須重新整理過。
如需更多有關如何偵測 .NET Framework 版本以及在伺服器上安裝安全性更新的資訊,請參閱<參考>一節。

?考

如需更多有關 ASP.NET 檢視狀態的資訊,請參閱下列文件:
ASP.NET 檢視狀態概觀
如需更多有關 ASP.NET 表單驗證的資訊,請參閱下列文件:
ASP.NET 表單驗證概觀
如需更多有關 ASP.NET 表單驗證的票證和 Cookie 資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
910443 瞭解表單驗證的票證和 Cookie
如需更多有關 ASP.NET Web 資源處理常式的資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
910442 使用 ASP.NET 2.0 中的 Web 資源

屬性

文章編號: 2431728 - 上次校閱: 2011年12月22日 - 版次: 6.0
這篇文章中的資訊適用於:
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 1.1 Service Pack 1
關鍵字:?
kbprb kbfix kbtshoot kbexpertiseinter kbsurveynew KB2431728
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com