共用方式為


MachineKeySection.CompatibilityMode 屬性

定義

取得或設定一個值,指定是否使用在 .NET Framework 2.0 Service Pack 1 版本後引入的升級檢視狀態加密方法。

public:
 property System::Web::Configuration::MachineKeyCompatibilityMode CompatibilityMode { System::Web::Configuration::MachineKeyCompatibilityMode get(); void set(System::Web::Configuration::MachineKeyCompatibilityMode value); };
[System.Configuration.ConfigurationProperty("compatibilityMode", DefaultValue=System.Web.Configuration.MachineKeyCompatibilityMode.Framework20SP1)]
public System.Web.Configuration.MachineKeyCompatibilityMode CompatibilityMode { get; set; }
[<System.Configuration.ConfigurationProperty("compatibilityMode", DefaultValue=System.Web.Configuration.MachineKeyCompatibilityMode.Framework20SP1)>]
member this.CompatibilityMode : System.Web.Configuration.MachineKeyCompatibilityMode with get, set
Public Property CompatibilityMode As MachineKeyCompatibilityMode

屬性值

此值表示是否使用了 .NET Framework 2.0 SP1 版本後引入的加密方法。

屬性

備註

.NET Framework 後期版本的升級加密方法降低了攻擊者成功逆向工程 DecryptionKey 該數值的風險。 舊有的加密方法是為了維持向下相容性而存在。

網路農場中的所有伺服器都應該設定 CompatibilityMode 該屬性為相同的值。 如果讀取表單驗證工單的伺服器設定與建立工單的伺服器不同 CompatibilityMode ,該工單將無法被辨識。

以下數值可指定於該 CompatibilityMode 性質:

  • Framework20SP1。 此值表示 ASP.NET 使用了 2.0 SP2 之前版本 ASP.NET 可用的加密方法。 如果網路農場中所有伺服器的 .NET Framework 版本早於 2.0 SP2,則使用此值。 除非應用程式 Web.config 檔案的 targetFramework 屬性 httpRuntime 設定為「4.5」,否則這是預設值。

  • Framework20SP2。 此值指定 ASP.NET 使用在 .NET Framework 2.0 SP2 中引入的升級加密方法。 如果網路農場中所有伺服器都安裝 .NET Framework 2.0、SP2 或更新版本,但至少有一台沒有 .NET Framework 4.5,則使用此值。

  • Framework45。 ASP.NET 4.5 的加密增強正在進行中。 如果應用程式 Web.config 檔案 targetFramework 的屬性 httpRuntime 設定為「4.5」,則預設值為 4.5。

當此屬性設為 Framework45時,會受到以下限制:

  • 如果財產 DataProtectorType 有價值,那麼該 ApplicationName 財產也必須有價值。 該 DataProtector 類別要求必須提供非空的應用程式名稱。

  • 屬性 Validation 必須是實際的驗證演算法(例如 MD5、SHA1、HMACSHA256、HMACSHA384、HMACSHA512)或是自訂演算法,將該 KeyedHashAlgorithm 類型子類別化。 AES 和 3DES 的數值是被禁止的。

  • 該框架不會產生僅簽署的有效載荷。 表單認證工單無論元素屬性在 Web.config 檔案中如何protectionforms設定,都會同時加密且簽署。 如果某頁設定了 EnableViewStateMacRequireViewStateEncryption 之一,檢視狀態將永遠同時加密且簽名。

根據 Microsoft 安全公告 MS10-070 中所述的安全更新,預設的加密行為在 和 Framework20SP2 設定中保持不變Framework20SP1。 不建議更改預設行為,但如果你想這麼做,可以參考 《如何在 ASP.NET 中設定舊有加密模式》。

適用於