摘要
安全公告 MS10-070 Microsoft介绍的安全更新更改了 ASP.NET 中的默认加密机制,以便除了加密之外,还执行验证 (签名) 。 本文介绍还原 ASP.NET 中加密的旧行为的配置选项。
有关此安全更新的更多信息,请访问以下网站:
http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx
详细信息
ASP.NET 允许用户通过 MachineKey 部分中的配置来选择加密或验证数据。 安全更新 MS10-070 解决的安全更新更改了 ASP.NET 中加密的默认行为,以便执行加密以外的验证,即使仅请求加密也是如此。
安装安全公告 MS10-070 中所述的安全更新后,为 ASP.NET 设置加密时将执行以下操作:
- 在数据加密期间,将为加密数据生成 HMAC 签名并将其附加到其中。
- 在解密数据期间,HMAC 签名会在解密数据之前进行验证。
除控制加密之外,ASP.NET 应用程序设置 (appSettings 中的以下键) 控制签名行为。
| 快捷键 | 类型 | 默认值 | 支持的 on.NET 版本 |
|---|---|---|---|
| aspnet:UseLegacyEncryption | 布尔 | 假 | Microsoft .NET Framework 2.0 Service Pack 1 Microsoft .NET Framework 2.0 Service Pack 2 Microsoft .NET Framework 3.5 Microsoft .NET Framework 3.5 Service Pack 1 Microsoft .NET Framework 4.0 |
| aspnet:UseLegacyMachineKeyEncryption | 布尔 | 假 | Microsoft .NET Framework 4.0 |
| aspnet:ScriptResourceAllowNonJsFiles | 布尔 | 假 | Microsoft .NET Framework 3.5 Service Pack 1 Microsoft .NET Framework 4.0 |
aspnet:UseLegacyEncryption appSetting 说明
此应用程序设置指定加密是否还使用 HMAC 密钥执行验证,即使 ASP.NET 配置的 machineKey 部分中的验证部分未配置用于 HMAC 签名验证。
| aspnet:UseLegacyEncryption | 说明 |
|---|---|
| False (默认) | 此设置配置 ASP.NET 在 ASP.NET 配置为使用加密时另外执行 HMAC 签名验证。 即使 machineKey 中的验证未配置为使用 HMAC 密钥进行签名,也会发生这种情况。 |
| 真 | 此设置配置 ASP.NET 在配置为使用加密而不是通过 machineKey 中的验证进行 HMAC 签名时不执行 HMAC 签名验证。 注意 此设置可能允许恶意客户端解密、伪造或以其他方式篡改加密数据。 |
若要配置此设置,请在计算机或应用程序 web.config 文件中添加以下配置:
<configuration>
...
<appSettings>
...
<add key="aspnet:UseLegacyEncryption" value="false" />
</appSettings>
</configuration>
aspnet:UseLegacyMachineKeyEncryption appSetting 说明
此应用程序设置指定通过 System.Web.Security.MachineKey 类进行的加密是否还会使用 HMAC 密钥执行验证,即使提供的 MachineKeyProtection 参数未指定执行验证也是如此。
| aspnet:UseLegacyMachineKeyEncryption | 说明 |
|---|---|
| False (默认) | 此设置将 ASP.NET 配置为在 ASP.NET 配置为使用加密时,通过 MachineKey 类另外执行 HMAC 签名验证。 即使提供的 MachineKeyProtection 参数未指定要执行验证,也会发生这种情况。 |
| 真 | 此设置配置 ASP.NET 在配置为使用加密而不是通过提供的 MachineKeyProtection 参数进行 HMAC 签名时,不通过 MachineKey 类执行 HMAC 签名验证。 注意 此设置可能允许恶意客户端解密、伪造或以其他方式篡改加密数据。 |
若要配置此设置,请在计算机或应用程序 web.config 文件中添加以下配置:
<configuration>
...
<appSettings>
...
<add key="aspnet:UseLegacyMachineKeyEncryption" value="false" />
</appSettings>
</configuration>
aspnet:ScriptResourceAllowNonJsFiles appSetting 说明
此应用程序设置指定 ASP.NET 中的 ScriptResource.axd 处理程序是否 (.js 扩展) 提供非 JavaScript 文件。 ScriptResource.axd 是一个 ASP.NET 处理程序,用于将 JavaScript 源文件返回到 ASP.NET 网页中的 AJAX 组件。
| aspnet:ScriptResourceAllowNonJsFiles | 说明 |
|---|---|
| False (默认) | 此设置将 ASP.NET 配置为仅通过 ScriptResource.axd 处理程序提供具有 .js 扩展名 (JavaScript) 的静态文件。 |
| 真 | 此设置配置 ASP.NET 为 ASP.NET 应用程序有权通过 ScriptResource.axd 处理程序访问的任何静态文件提供服务。 注意 此设置允许通过处理程序为 ASP.NET 应用程序中的任何文件提供服务。 如果任何此类文件包含敏感或机密数据,则此设置可能会将敏感信息泄露给客户端。 |
若要配置此设置,请在计算机或应用程序 web.config 文件中添加以下配置:
<configuration>
...
<appSettings>
...
<add key="aspnet:ScriptResourceAllowNonJsFiles" value="false" />
</appSettings>
</configuration>
参考资料
有关 MachineKey 部分的详细信息,请访问以下 Microsoft 网站:
http://msdn.microsoft.com/en-us/library/w8h3skw9.aspx
有关 System.Web.Security.MachineKey 类的更多信息,请访问以下 Microsoft 网站:
http://msdn.microsoft.com/en-us/library/system.web.security.machinekey.aspx 有关如何使用应用程序设置 (appSettings) 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
815786 如何使用 Visual C 从应用程序配置文件中存储和检索自定义信息#
313405 如何使用 Visual Basic .NET 或 Visual Basic 2005 从应用程序配置文件中存储和检索自定义信息
有关 ASP.Net 配置的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
307626 信息:ASP.NET 配置概述