A számos űrlapkulccsal, fájllal vagy hasznos forgalommal rendelkező JSON-taggal rendelkező ASP.NET-kérések kivételhiba miatt meghiúsulnak

Cikk azonosítója: 2661403 - A cikkben érintett termékek listájának megtekintése.
Az összes kibontása | Az összes összecsukása

Összefoglaló

A Microsoft MS11-100 jelű biztonsági frissítése 1000-re korlátozza a HTTP-kérésekben található űrlapkulcsok, fájlok és JSON-tagok maximális számát. A változás miatt az ASP.NET-alkalmazások elutasítják a több mint 1000 ilyen elemet tartalmazó kéréseket. Az ilyen kéréseket létrehozó HTTP-ügyfeleket elutasítja a rendszer, és hibaüzenet jelenik meg a böngészőben. A hibaüzenet állapotkódja általában HTTP 500. Ez az új korlátozás általában alkalmazásonként külön állítható be. A beállításhoz a cikk megoldást ismertető szakaszában találhat útmutatást.


A jelenség

A számos űrlapkulccsal, fájllal vagy JSON-taggal rendelkező ASP.NET-kérések hibaüzenetet kapnak a kiszolgálótól. A kiszolgálón található alkalmazásnaplóban található egy Figyelmeztetés bejegyzés, amelynek a Forrása az ASP.NET egy adott verziója, az eseményazonosítója pedig 1309. Az eseménynapló a következő üzenetek egyikét tartalmazza:


1. üzenet:
Alkalmazás adatai:
Alkalmazás tartománya: /LM/W3SVC/1/ROOT/<Alkalmazás tartománya>
Megbízhatósági szint: Közepes
Alkalmazás virtuális elérési útja: <Virtuális könyvtár elérési útja>
Alkalmazás elérési útja: <Alkalmazás elérési útja>
Számítógép neve: <Számítógép neve>
Folyamat adatai:
Folyamat azonosítója: 0001
Folyamat neve: w3wp.exe
Fiók neve: IIS APPPOOL\DefaultAppPool

Kivétel adatai:
Kivétel típusa: HttpException
A kivételhez tartozó üzenet: Az URL-kódolású űrlapadatok érvénytelenek.
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. üzenet:
Alkalmazás adatai:
Alkalmazás tartománya: /LM/W3SVC/1/ROOT/<Alkalmazás tartománya>
Megbízhatósági szint: Közepes
Alkalmazás virtuális elérési útja: <Virtuális könyvtár elérési útja>
Alkalmazás elérési útja: <Alkalmazás elérési útja>
Számítógép neve: <Számítógép neve>

Folyamat adatai:
Folyamat azonosítója: 0001
Folyamat neve: w3wp.exe
Fiók neve: IIS APPPOOL\DefaultAppPool

Kivétel adatai:
Kivétel típusa: InvalidOperationException
A kivételhez tartozó üzenet: Az objektum jelenlegi állapota miatt a művelet érvénytelen.
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. üzenet:
Alkalmazás adatai:
Alkalmazás tartománya: /LM/W3SVC/1/ROOT/<Alkalmazás tartománya>
Megbízhatósági szint: Közepes
Alkalmazás virtuális elérési útja: <Virtuális könyvtár elérési útja>
Alkalmazás elérési útja: <Alkalmazás elérési útja>
Számítógép neve: <Számítógép neve>

Folyamat adatai:
Folyamat azonosítója: 0001
Folyamat neve: w3wp.exe
Fiók neve: IIS APPPOOL\DefaultAppPool

Kivétel adatai:
Kivétel típusa: InvalidOperationException
A kivételhez tartozó üzenet: Az objektum jelenlegi állapota miatt a művelet érvénytelen.
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)


Az IIS naplófájl a következőhöz hasonló bejegyzést jelenít meg:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




Oka

A Microsoft MS11-100 jelű biztonsági közleményben ismertetett biztonsági frissítése 1000-re módosítja az egyes kérésekben található űrlapkulcsok, fájlok és JSON-tagok az ASP.NET által elfogadható alapértelmezett maximális számát. A módosítás célja a Microsoft MS11-100 jelű biztonsági közleményében ismertetett szolgáltatásmegtagadási támadások elhárítása.


A megoldás

Az űrlapkulcsok és fájlok határértékét elérő alkalmazások az alábbi ASP.NET alkalmazáskonfigurációs fájlban látható módon módosíthatják az ASP.NET aspnet:MaxHttpCollectionKeys appSetting beállítását. A beállítás a jelenséget ismertető szakaszban található 1. és 2. hibaüzenetre szolgál megoldással.
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


Megjegyzés: Amennyiben ASP.NET 1.1 keretrendszert x86-alapú rendszeren használja, a beállítást úgy módosíthatja, ha egy duplaszó értéket ad hozzá a következő beállításkulcshoz:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Amennyiben ASP.NET 1.1 keretrendszert x64-alapú rendszeren használja, a beállítást úgy módosíthatja, ha egy duplaszó értéket ad hozzá a következő beállításkulcshoz:

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



A JSON hasznos forgalomra vonatkozó határértékét elérő alkalmazások az alábbi ASP.NET-alkalmazáskonfigurációfájlban látható módon módosíthatják az ASP.NET aspnet:MaxJsonDeserializerMembers appSetting beállítását. A beállítás a jelenségeket ismertető szakaszban található 3. hibaüzenetre szolgál megoldással.
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



Megjegyzés: Ha ezt az értéket az alapérték fölé növeli, azzal jobban kiteszi a kiszolgálót az MS11-100 jelű biztonsági közleményben ismertetett szolgáltatásmegtagadási támadásoknak.


Hivatkozások

Az MS11-100 jelű biztonsági közleményről a következő TechNet-cikkben olvashat bővebben:
MS11-100 jelű Microsoft biztonsági közlemény – kritikus
További információt a Microsoft Tudásbázis következő cikkében talál:
2638420 MS11-100: A .NET-keretrendszer biztonsági rése jogosultság-kiterjesztést tehet lehetővé: 2011. december 29.
Megjegyzés: Ez egy „GYORS KÖZZÉTÉTEL۔ cikk, amelyet maga Microsoft támogatási csoportja készített. A benne fogalt információkat a jelentkező problémákra válaszul, az adott állapotukban biztosítjuk. Az anyagok a közzétételük gyorsaságából következően tartalmazhatnak sajtóhibákat, illetve külön értesítés nélkül bármikor átdolgozáson eshetnek át. További tudnivalók olvashatók a felhasználási feltételek között.

Tulajdonságok

Cikk azonosítója: 2661403 - Utolsó ellenőrzés: 2012. november 29. - Verziószám: 1.0
A cikkben található információ a következő(k)re vonatkozik:
  • 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-keretrendszer 1.1
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.0
  • Windows 7 Service Pack 1 a következő platformokon
    • 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 a következő platformokon
    • 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 a következő platformokon
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Service Pack 2 szervizcsomag a Windows Vista rendszerhez a következő platformokon
    • 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 a következő platformokon
    • 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 a következő platformokon
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
Kulcsszavak: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability kbsurveynew KB2661403
A Microsoft tudásbázisban szolgáltatott információkat "az adott állapotban", bárminemű szavatosság vagy garancia nélkül biztosítjuk. A Microsoft kizár mindennemű, akár kifejezett, akár vélelmezett szavatosságot vagy garanciát, ideértve a forgalomképességre és az adott célra való alkalmasságra vonatkozó szavatosságot is. A Microsoft Corporation és annak beszállítói semmilyen körülmények között nem felelősek semminemű kárért, így a közvetlen, a közvetett, az üzleti haszon elmaradásából származó vagy speciális károkért, illetve a kár következményeként felmerülő költségek megtérítéséért, még abban az esetben sem, ha a Microsoft Corporationt vagy beszállítóit az ilyen károk bekövetkeztének lehetőségére figyelmeztették. Egyes államok joga nem teszi lehetővé bizonyos károkért a felelősség kizárását vagy korlátozását, ezért a fenti korlátozások az ön esetében esetleg nem alkalmazhatók.

Visszajelzés küldése