Požadavek ASP.NET, který obsahuje mnoho klíčů formulářů, souborů nebo členů datové části JSON, se nezdaří s výjimkou

Překlady článku Překlady článku
ID článku: 2661403 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Aktualizace zabezpečení společnosti Microsoft MS11-100 omezuje maximální počet klíčů formulářů, souborů a členů JSON v požadavku HTTP na 1000. Na základě této změny aplikace ASP.NET odmítají požadavky, které mají více než 1000 těchto elementů. Klienti HTTP, kteří zadávají takové požadavky, budou odmítnuti a ve webovém prohlížeči se zobrazí chybová zpráva. Tato chybová zpráva má obvykle stavový kód HTTP 500. Tento nový limit lze konfigurovat pro jednotlivé aplikace. Pokyny ke konfiguraci najdete v části Řešení.


Příznaky

Požadavek ASP.NET, který obsahuje mnoho klíčů formulářů, souborů nebo členů datové části JSON, obdrží od serveru chybovou odpověď. Protokol aplikací na serveru obsahuje položku upozornění se zdrojem, který je určitou verzí rozhraní ASP.NET, a identifikátorem události 1309. Protokol událostí obsahuje jednu z následujících zpráv: 


Zpráva 1:
Informace o aplikaci:
Doména aplikace: /LM/W3SVC/1/ROOT/<Doména aplikace>
Úroveň důvěryhodnosti: Střední
Virtuální cesta aplikace: <Cesta VDIR>
Cesta aplikace: <Cesta aplikace>
Název počítače: <Název počítače>
Informace o procesu:
ID procesu: 0001
Název procesu: w3wp.exe
Název účtu: IIS APPPOOL\DefaultAppPool

Informace o výjimce:
Typ výjimky: HttpException
Zpráva o výjimce: Data formuláře kódovaná v řetězci URL nejsou platná.
v System.Web.HttpRequest.FillInFormCollection()
v System.Web.HttpRequest.get_Form()
v System.Web.HttpRequest.get_HasForm()
v System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
v System.Web.UI.Page.DeterminePostBackMode()
v System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


Zpráva 2:
Informace o aplikaci:
Doména aplikace: /LM/W3SVC/1/ROOT/<Doména aplikace>
Úroveň důvěryhodnosti: Střední
Virtuální cesta aplikace: <Cesta VDIR>
Cesta aplikace: <Cesta aplikace>
Název počítače: <Název počítače>

Informace o procesu:
ID procesu: 0001
Název procesu: w3wp.exe
Název účtu: IIS APPPOOL\DefaultAppPool

Informace o výjimce:
Typ výjimky: InvalidOperationException
Zpráva o výjimce: Operace není platná z důvodu aktuálního stavu objektu.
v System.Web.HttpRequest.FillInFilesCollection()
v System.Web.HttpRequest.get_Files()
v FileUpload.Page_Load(Object sender, EventArgs e)
v System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
v System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
v System.Web.UI.Control.OnLoad(EventArgs e)
v System.Web.UI.Control.LoadRecursive()
v System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

Zpráva 3:
Informace o aplikaci:
Doména aplikace: /LM/W3SVC/1/ROOT/<Doména aplikace>
Úroveň důvěryhodnosti: Střední
Virtuální cesta aplikace: <Cesta VDIR>
Cesta aplikace: <Cesta aplikace>
Název počítače: <Název počítače>

Informace o procesu:
ID procesu: 0001
Název procesu: w3wp.exe
Název účtu: IIS APPPOOL\DefaultAppPool

Informace o výjimce:
Typ výjimky: InvalidOperationException
Zpráva o výjimce: Operace není platná z důvodu aktuálního stavu objektu.
v System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
v System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
v System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
v System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
v System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
v Failing.Page_Load(Object sender, EventArgs e)
v System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
v System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
v System.Web.UI.Control.OnLoad(EventArgs e)
v System.Web.UI.Control.LoadRecursive()
v System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


Soubor protokolu IIS obsahuje položku podobnou následující položce:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




Příčina

Aktualizace zabezpečení společnosti Microsoft, na kterou je zaměřen bulletin MS11-100, mění výchozí maximální počet klíčů formulářů, souborů a členů JSON v požadavku, které rozhraní ASP.NET přijímá, na 1000. Tato změna byla provedena, aby se zabránilo chybě umožňující odepření služby, která je dokumentována v bulletinu zabezpečení společnosti Microsoft MS11-100.


Řešení

Aplikace, které dosáhnou tohoto limitu pro klíče formulářů nebo soubory, mohou upravit nastavení rozhraní ASP.NET appSetting aspnet:MaxHttpCollectionKeys v konfiguračním souboru aplikace ASP.NET, jak je uvedeno dále. Toto nastavení je určeno pro případy chybové zprávy 1 a chybové zprávy 2 z části Příznaky. 
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


Poznámka: Používáte-li rozhraní ASP.NET 1.1 v systému pro platformu x86, nastavení je upraveno přidáním hodnoty DWORD do následujícího klíče registru:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Používáte-li rozhraní ASP.NET 1.1 v systému pro platformu x64, nastavení je upraveno přidáním hodnoty DWORD do následujícího klíče registru:

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



Aplikace, které dosáhnou tohoto limitu pro datové části JSON, mohou upravit nastavení rozhraní ASP.NET appSetting aspnet:MaxJsonDeserializerMembers v konfiguračním souboru aplikace ASP.NET, jak je uvedeno dále. Toto nastavení je určeno pro případy chybové zprávy 3 z části Příznaky.
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



Poznámka: Zvýšení této hodnoty nad výchozí nastavení zvyšuje náchylnost serveru k chybě umožňující odepření služby, která je probírána v bulletinu zabezpečení MS11-100.


Odkazy

Další informace o bulletinu zabezpečení MS11-100 naleznete v následujícím článku na webu TechNet:
Bulletin zabezpečení MS11-100 – Závažné
Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
2638420 MS11-100: Chyba zabezpečení rozhraní .NET Framework by mohla umožnit zvýšení oprávnění: 29. prosince 2011

Vlastnosti

ID článku: 2661403 - Poslední aktualizace: 29. listopadu 2012 - Revize: 4.0
Informace v tomto článku jsou určeny pro produkt:
  • 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 na těchto platformách
    • 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 na těchto platformách
    • 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 na těchto platformách
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Aktualizace SP2 pro Windows Vista na těchto platformách
    • 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 na těchto platformách
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • 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 na těchto platformách
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
Klíčová slova: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403

Dejte nám zpětnou vazbu

 

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