拥有许多窗体项、文件或 JSON 负载成员的 ASP.NET 请求由于异常失败

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

概要

Microsoft 安全更新 MS11-100 将 HTTP 请求中窗体项、文件和 JSON 成员的最大数量限制为 1000。由于此更改,ASP.NET 应用程序拒绝拥有超过 1000 种这些元素的请求。执行这些类型请求的 HTTP 客户端将被拒绝,且 Web 浏览器中会出现错误消息。此错误消息通常都包含 HTTP 500 状态代码。每个应用程序上都可配置这个新限制。有关配置说明,请参阅“解决方案”部分。


症状

拥有许多窗体项、文件或 JSON 负载的 ASP.NET 请求会收到来自服务器的错误响应。在服务器上登录的应用程序具有带有的警告条目(ASP.NET 的特定版本)和事件 ID 1309。事件日志包含以下消息之一:


消息 1:
应用程序信息:
应用程序域:/LM/W3SVC/1/ROOT/<App Domain>
信任级别:中
应用程序虚拟路径:<VDIR Path>
应用程序路径:<App Path>
机器名:<Machine Name>
进程信息:
进程 ID: 0001
进程名称:w3wp.exe
帐户名称:IIS APPPOOL\DefaultAppPool

异常信息:
异常类型:HttpException
异常消息:URL 编码的表单数据无效。
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


消息 2:
应用程序信息:
应用程序域:/LM/W3SVC/1/ROOT/<App Domain>
信任级别:中
应用程序虚拟路径:<VDIR Path>
应用程序路径:<App Path>
机器名:<Machine Name>

进程信息:
进程 ID: 0001
进程名称:w3wp.exe
帐户名称:IIS APPPOOL\DefaultAppPool

异常信息:
异常类型:InvalidOperationException
异常消息:由于对象的当前状态,操作无效。
at System.Web.HttpRequest.FillInFilesCollection()
at System.Web.HttpRequest.get_Files()
at FileUpload.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

消息 3:
应用程序信息:
应用程序域:/LM/W3SVC/1/ROOT/<App Domain>
信任级别:中
应用程序虚拟路径:<VDIR Path>
应用程序路径:<App Path>
机器名:<Machine Name>

进程信息:
进程 ID: 0001
进程名称:w3wp.exe
帐户名称:IIS APPPOOL\DefaultAppPool

异常信息:
异常类型:InvalidOperationException
异常消息:由于对象的当前状态,操作无效。
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
at System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
at Failing.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


IIS 日志文件显示一个类似于以下形式的条目:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




原因

安全公告 MS11-100 解决的 Microsoft 安全更新将 ASP.NET 在一个请求中可接受的窗体项、文件和 JSON 成员的默认最大数量更改为 1000。此更改用于解决 Microsoft 安全公告 MS11-100 记录的拒绝服务漏洞。


解决方案

达到窗体项或文件的此限制的应用程序可以修改 ASP.NET appSetting aspnet:MaxHttpCollectionKeys,如 ASP.NET 应用程序的配置文件所示。此设置可解决“症状”部分的错误消息 1 和错误消息 2。
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


注意 如果您在基于 x86 的系统上使用 ASP.NET 1.1,可通过向以下注册表项添加 DWORD 值来调整此设置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
如果您在基于 x64 的系统上使用 ASP.NET 1.1,可通过向以下注册表项添加 DWORD 值来调整此设置:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys



达到此 JSON 负载限制的应用程序可以修改 ASP.NET appSetting aspnet:MaxJsonDeserializerMembers,如下面的 ASP.NET 应用程序配置文件所示。此设置可解决“症状”部分的错误消息 3。
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



注意 将此值增加到超过默认设置会增加服务器对安全公告 MS11-100 中所述的拒绝服务漏洞的敏感性。


参考

有关安全公告 MS11-100 的详细信息,请参阅以下 TechNet 文章:
Microsoft 安全公告 MS11-100 - 严重
有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2638420 MS11-100:.NET Framework 中的漏洞可能允许特权提升:2011 年 12 月 29 日

属性

文章编号: 2661403 - 最后修改: 2012年11月29日 - 修订: 4.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 2.0 Service Pack 1 (x86)
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.0
  • Windows 7 Service Pack 1?当用于
    • Windows 7 Enterprise
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows 7 Home Premium
    • Windows 7 Home Basic
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Ultimate
  • Windows 7 Home Premium
  • Windows 7 Home Basic
  • Windows Server 2008 R2 Service Pack 1?当用于
    • Windows Server 2008 R2 Standard
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 Service Pack 2?当用于
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Windows Vista Service Pack 2?当用于
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Starter
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
  • Microsoft Windows Server 2003 Service Pack 2?当用于
    • Microsoft Windows Server 2003 Standard Edition
    • Microsoft Windows Server 2003 Enterprise Edition
    • Microsoft Windows Server 2003 Datacenter Edition
    • Microsoft Windows Server 2003 Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows XP Service Pack 3?当用于
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional Edition
关键字:?
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
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