Platí pro
.NET Framework 3.5 Service Pack 1 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 Server 2008 Web Edition 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 XP Professional x64 Edition Microsoft Windows XP Service Pack 3 Microsoft Windows XP Home Edition Microsoft Windows XP Professional

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: 0001Ná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: 0001Ná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

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.