无法为使用持久窗体身份验证 Cookie 的网站或在 Web 场中部署的网站解密 ASP.NET 中的加密内容,或导致出现错误

文章翻译 文章翻译
文章编号: 2431728 - 查看本文应用于的产品
展开全部 | 关闭全部

症状

将安全更新 MS10-070 应用到为 Web 场中部署的 Microsoft ASP.NET 网站提供服务的服务器时,Web 场中的某些服务器或应用程序可能遇到一个或多个以下症状:
  • 无法解密数据
  • WebResource 或 ScriptResource 处理程序发生异常
  • 使用窗体身份验证时身份验证失败
  • “Invalid Viewstate”(无效的视图状态)异常
  • 尝试解密数据(例如窗体身份验证 Cookie)时出现“Unable to validate data”(无法验证数据)异常
访问 ASP.NET 应用程序时,操作失败可能显示为应用程序异常,并且还可能在应用程序日志中记录类似于以下内容的信息。


消息 1:

System.Web.HttpException :Unable to validate data. at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo, Boolean signData)

消息 2:

Event Type:Warning
Event Source:ASP.NET 2.0.50727.0
Event Category:Web Event
Event ID: 1309
Date:Date
Time:Time
User:N/A
Description:
Event code: 3005
Event message:An unhandled exception has occurred.
Exception information:
Exception type:HttpException
Exception message:Unable to validate data.

原因

公告 MS10-070 中的安全更新将更改 ASP.NET 中的默认加密行为。在安装安全更新之后,新的默认行为除了执行加密之外,还将执行验证(即使只请求进行加密)。该默认行为将更改在其上应用此更新的服务器的加密负载。负载可能包括视图状态和窗体身份验证 Cookie。如果 Web 场只包含应用了安全更新的某些服务器,则在 Web 场中的不同服务器上,对同一负载的加密和解密方法将不同,这种行为差异将导致异常。如果在应用安全更新之前,系统上暂留的窗体身份验证 Cookie 在应用安全更新之后使用,则也会发生此行为。

此外,对于不同 Service Pack 版本的 Microsoft .NET Framework 2.0,加密和解密方法不同。因此,如果 Web 场环境中包含不同 Service Pack 级别的 .NET Framework 且安装了安全更新,将导致不同的加密负载和相似的解密问题。

解决方案

验证为 ASP.NET 内容提供服务的所有服务器是否均满足以下条件:
  • 为 Web 场中的 ASP.NET 网站提供服务的所有服务器必须安装安全更新。如果某些服务器未安装安全更新,则必须将更新应用到这些服务器。
  • 如果将 MS10-070 安全更新应用到所有系统,则 Web 场中的所有计算机运行的某些版本的 .NET Framework 2.0 必须是同一 Service Pack 级别。如果服务器上的 Service Pack 级别不同,则必须将所有服务器更新到最新 Service Pack,并重新应用所有安全更新。因此,如果 Web 场中的某些服务器运行的是 .NET Framework 2.0 SP1,而其他服务器运行的是 .NET Framework 2.0 SP2,则在您将安全更新应用到 Web 场中的所有服务器之前,必须将所有 .NET Framework 2.0 SP1 服务器升级到 .NET Framework 2.0 SP2。
  • 确保应用程序未使用加密数据,例如应用更新之前生成的窗体身份验证 Cookie。应用安全更新之后,必须刷新以前加密的数据。
有关如何检测 .NET Framework 版本和服务器上安全更新安装的详细信息,请参阅“参考”部分。

参考

有关 ASP.NET 视图状态的详细信息,请参阅以下文章:
ASP.NET 视图状态概述
有关 ASP.NET 窗体身份验证的详细信息,请参阅以下文章:
ASP.NET 窗体身份验证概述
有关 ASP.NET 窗体身份验证票证和 Cookie 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
910443 了解窗体身份验证票证和 Cookie
有关 ASP.NET Web Resource 处理程序的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
910442 使用 ASP.NET 2.0 中的 Web Resources

属性

文章编号: 2431728 - 最后修改: 2011年12月22日 - 修订: 6.0
这篇文章中的信息适用于:
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 1.1 Service Pack 1
关键字:?
kbprb kbfix kbtshoot kbexpertiseinter kbsurveynew KB2431728
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com