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 的风险。 为了保持向后兼容性,可以使用较旧的加密方法。

Web 场中的所有服务器都应将 CompatibilityMode 属性设置为相同的值。 如果读取 Forms 身份验证票证的服务器具有与创建票证的服务器不同的 CompatibilityMode 设置,则无法识别该票证。

可以为 属性指定 CompatibilityMode 以下值:

  • Framework20SP1. 此值指定 ASP.NET 使用早于 2.0 SP2 的 ASP.NET 版本中提供的加密方法。 如果任何服务器的 .NET Framework 版本早于 2.0 SP2,则对 Web 场中的所有服务器使用此值。 这是默认值,除非应用程序 Web.config 文件的 targetFramework 元素的 httpRuntime 属性设置为“4.5”。

  • Framework20SP2. 此值指定 ASP.NET 使用 .NET Framework 2.0 SP2 中引入的升级加密方法。 如果所有服务器都具有 .NET Framework 2.0 SP2 或更高版本,但至少有一台服务器没有 .NET Framework 4.5,则对 Web 场中的所有服务器使用此值。

  • Framework45. ASP.NET 4.5 的加密增强功能已生效。 如果应用程序 Web.config 文件的 targetFramework 元素的 httpRuntime 属性设置为“4.5”,则这是默认值。

当此属性设置为 Framework45时,以下限制将生效:

  • 如果 DataProtectorType 属性有值,则 ApplicationName 属性必须有值。 类 DataProtector 要求提供非空应用程序名称。

  • 属性 Validation 必须是实际验证算法 (,例如 MD5、SHA1、HMACSHA256、HMACSHA384、HMACSHA512) 或子类 KeyedHashAlgorithm 类型的自定义算法。 禁止使用值 AES 和 3DES。

  • 框架不会生成仅签名的有效负载。 无论在 Web.config 文件中如何 protection 设置 元素的 forms 属性,Forms 身份验证票证都将始终进行加密和签名。 如果为给定页面设置了 或 RequireViewStateEncryptionEnableViewStateMac则视图状态将始终经过加密和签名。

由于 Microsoft 安全公告 MS10-070 中描述的安全更新,和 Framework20SP2 设置的默认加密行为是相同的Framework20SP1。 不建议更改默认行为,但如果要更改,请参阅 如何在 ASP.NET 中配置旧加密模式

适用于