配置用于加密和解密 Forms 身份验证 Cookie 数据和视图状态数据的密钥,以及配置用于验证进程外会话状态标识的密钥。此节可以在计算机、站点或应用程序级别进行声明,但不能在子目录级别声明。
配置结构的示例:
<configuration>
<system.web>
<machineKey>
<machineKey validationKey="AutoGenerate|value[,IsolateApps]"
decryptionKey="AutoGenerate|value[,IsolateApps]
validation="SHA1|MD5|3DES"/>
属性 | 选项 | 描述 |
---|---|---|
validationKey | 指定用于验证加密数据的密钥。当 enableViewStateMAC 为 |
|
AutoGenerate | 指定 ASP.NET 生成一个随机的密钥并将其存储在本地安全机构 (LSA) 中。AutoGenerate 选项是默认值。如果将 IsolateApps 修饰符添加到 validationKey 值中,ASP.NET 会使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。 | |
value | 指定一个手动分配的验证密钥。必须手动设置该值以确保整个 Web 服务器网络(Web 场)具有一致的配置。此密钥长度最少为 40 个字符(20 个字节),最多为 128 个字符(64 个字节)。如果使用的密钥比最大长度短,则采用真正随机的方法来创建这些密钥,例如使用 RNGCryptoServiceProvider。建议的密钥长度为 128 个十六进制字符。如果将 IsolateApps 修饰符添加到 validationKey 值中,ASP.NET 会使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。 | |
decryptionKey | 指定用于加密数据的密钥。decryptionKey 用于 Forms 身份验证加密和解密;当 validation 为 3DES 时,它还用于视图状态加密。 | |
AutoGenerate | 指定 ASP.NET 生成一个随机的密钥并将其存储在 LSA 中。AutoGenerate 选项是默认值。如果将 IsolateApps 修饰符添加到 decryptionKey 值中,ASP.NET 会使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。 | |
value | 指定一个手动分配的密钥。必须手动将该值设置为十六进制字符串,以确保整个 Web 场具有一致的配置。在使用 DES 加密时,此密钥长度应该为 16 个字符;在使用三重 DES 加密时,此密钥长度应该为 48 个字符。如果使用的密钥比最大长度短,则应该采用真正随机的方法来创建这些密钥。ASP.NET 只能在可使用 128 位加密的计算机上使用三重 DES。如果将 IsolateApps 修饰符添加到 decryptionKey 值中,ASP.NET 会使用每个应用程序的应用程序 ID 为每个应用程序生成一个唯一的加密密钥。 | |
validation | 指定用于数据验证的加密类型。 | |
SHA1 | 指定 ASP.NET 使用 SHA1 加密。 | |
MD5 | 指定 ASP.NET 使用 MD5 加密。 | |
3DES | 指定 ASP.NET 使用三重 DES (3DES) 加密。在指定 3DES 时,Forms 身份验证默认为 SHA1。在将 validation 属性设置为 3DES 时,视图状态验证技术使用 3DES 加密。 |
以下示例将 validationKey 和 decryptionKey 均设置为 AutoGenerate。指定 isolateApps 选项以便给服务器上的每个应用程序生成唯一的密钥。
<machineKey validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
validation="SHA1"/>