摘要
安全性更新 2638420 (描述於資訊安全佈告欄 MS11-100) 會變更 ASP.NET 建立表單驗證票證的方式。新行為與舊行為不相容。使用舊行為的伺服器無法讀取使用新行為產生的票證,反之亦然。所以如果您用的應用程式是使用表單驗證,則必須執行部署安全性更新 2638420 的特定步驟,以確認所有伺服器都一致使用新行為。
部署指導
因為票證行為變更的緣故,用使用表單驗證之應用程式的系統管理員必須執行部署安全性更新 2638420 的特定步驟,確認所有伺服器已一致地切換為新行為。
如果要判斷您的應用程式是否使用表單驗證,請檢查 System.web 檔案。使用表單驗證的應用程式會使用 System.web 檔案中的下列項目:
<authentication mode="Forms">注意事項
-
預設驗證模式是「Windows」。
-
如果確實將 ASP.NET 設定為只使用表單驗證,則 ASP.NET 就只會使用表單驗證。
如果您用的應用程式是使用表單驗證,就必須使用下列其中一個方法部署安全性更新 2638420,以確認您的網站可繼續正確運作。
方法 1
同時將安全性更新 2638420 部署到 ASP.NET Web 伺服陣列中所有使用中的伺服器。如果要執行這項操作,請依照下列步驟執行:
-
移除負載平衡器兩指旋轉中一半的 Web 伺服陣列伺服器。
-
將更新安裝到這些伺服器上。
-
讓剩餘的伺服器一起離線以進行更新時,將移除的伺服器加回兩指旋轉。
方法 2
如果您無法將安全性更新 2638420 一次部署到所有 Web 伺服陣列伺服器,請改用此方法。
注意 我們不建議您使用此方法。當您設定此參數時,您可以在部分 Web 伺服陣列伺服器上安裝安全性更新,然後使用舊行為繼續運作。不過使用此設定參數的伺服器會處於不安全的狀態,且安全性更新中所有修正將無法修正這些伺服器。所以您應移除設定參數,才能在安全更新 2638420 部署到所有 Web 伺服陣列伺服器上時便立即啟用新的安全行為。
請先在 Web.config 或 Machine.config 檔案中設定相容性參數,再安裝安全性更新 2638420 使系統在安裝更新時強制執行舊行為。如果要執行這項操作,請依照下列步驟執行:
-
請使用文字編輯器 (如記事本) 開啟 Web.config 檔案或 Machine.config 檔案。
-
將下列文字加入檔案中,然後儲存檔案:
<appSettings>
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
</appSettings>更新並儲存 Web.config 或 Machine.config 檔案之後,您不需要重新啟動電腦或任何服務。設定變更通知會自動循環應用程式集區。
您可以在下列位置找到 Web.config 檔案:
如果是 .NET Framework 4.0 到 4.5 版
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Web.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Web.config 如果是 .NET Framework 2.0 版到 3.5 版 SP1
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Web.config 如果是 32-位元的電腦,則只會有 [Framework] 資料夾。如果是 64 位元電腦,則會有 [Framework] 和 [Framework64] 資料夾。所以如果您有同時有執行 CLR 2 + CLR 4 組合的 32 位元和 64 位元應用程式集區,就必須將項目新增上到述四個檔案中。
如果您也將 <appSettings> 項目新增到上述的 config 檔案中,則變更就會套用至整個系統,。
已知問題
-
安裝安全性更新 2638420 之後,票證解密失敗
啟用新的票證行為之後,所有使用舊行為產生的表單驗證票證就會失效。此問題發生時,使用者狀態是登出的,而伺服器管理員進行票證解密時可能會失敗。
同時下列錯誤訊息會記錄到事件記錄檔中:記錄檔名稱:應用程式
事件識別碼: 1315
事件代碼: 4005
事件訊息:要求的表單驗證失敗。原因:提供的票證無效。
這些失敗可能會造成未預期的行為。例如,如果網頁是由<授權>元素所保護,就可能會發生「HTTP 401」或「HTTP 302」錯誤。
安裝安全性更新 2638420 之後,因為先前產生的票證已到期,所以系統管理員將會發生數個上述的票證解密失敗。失敗發生的次數及頻率應會隨著新票證產生的時間越久,而變得越少。如果安裝安全性更新之後,解密失敗仍持續長期發生,這就表示某些 Web 伺服陣列伺服器仍在使用舊的票證行為。例如,如果下列其中一項狀況成立就可能會發生此問題:-
一或多個伺服器未安裝安全性更新 2638420。
-
一或多個伺服器設定了上述的相容性參數。該相容性參數就是本文前段所述的相容性參數。
-
其他相關資訊
系統不再支援 TicketCompatibilityMode 設定參數
因為安全性更新 2638420 會變更表單驗證票證的格式,所以如果您已安裝並啟用安全性更新 2638420,系統就無法再支援 <forms/ticketCompatibilityMode> 設定參數。
如需有關 <forms/ticketCompatibilityMode> 設定參數的詳細資訊,請造訪下列 MSDN 網站: