Zahtev za ASP.NET ima dosta obrasca ključeve, datoteke ili što su JSON tovar članova ne uspeva uz izuzetak

Primenjuje se na: .NET Framework 3.5 Service Pack 1Windows 7 Service Pack 1Windows 7 Enterprise

Rezime


Microsoft bezbednost ažurirajte MS11-100 ograničenja maksimalan broj obrasca ključeve, datoteke i što su JSON članovi 1000 u HTTP zahtev. Zbog ovih promena, ASP.NET aplikacije odbiti pozive za više od 1000 od ovih elemenata. HTTP klijentima da biste napravili takve zahtjeve će biti odbijen i poruku o grešci će se pojaviti u web pregledaču. Poruka o grešci će obično imaju šifrom statusa HTTP 500. Ovo novo ograničenje može biti podešen na osnovu po aplikaciji. Pogledajte u odjeljku „Rješenja” za konfiguraciju uputstva.

Simptomi


ASP.NET pozive za puno ključeva obrasca, datoteke ili što su JSON tovar prijema je greška odgovor sa servera. Zapisnik za aplikacije na serveru ima upozorenje stavku sa izvora koji je određenu verziju tehnologije ASP.NET, a ID događaja 1309. U evidenciji događaja sadrži jednu od sledećih poruka:
Poruka 1:
Informacije o aplikaciji: aplikacija domena: / LM/W3SVC/1/ROOT/< aplikacija za domen > pouzdani nivo: srednja aplikacije virtualne putanje: < VDIR putanja > putanja aplikacije: ime < App putanja > mašine: < ime mašine > proces informacije: ID procesa: 0001 ime procesa: w3wp.exe naziv računa: IIS izuzetak APPPOOL\DefaultAppPool informacije: tip izuzetka: HttpException izuzetak poruka: podatke obrasca kodirane u The URL nije važeći. na (System.Web.HttpRequest.FillInFormCollection) u (System.Web.HttpRequest.get_Form) u (System.Web.HttpRequest.get_HasForm) u System.Web.UI.Page.GetCollectionBasedOnMethod (Boolean dontReturnNull) u (System.Web.UI.Page.DeterminePostBackMode) u System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Poruka 2:
Informacije o aplikaciji: aplikacija domena: / LM/W3SVC/1/ROOT/< aplikacija za domen > pouzdani nivo: srednja aplikacije virtualne putanje: < VDIR putanja > putanja aplikacije: ime < App putanja > mašine: < ime mašine > proces informacije: ID procesa: 0001Process ime: w3wp.exe naziv računa: IIS izuzetak APPPOOL\DefaultAppPool informacije: tip izuzetka: InvalidOperationException izuzetak poruka: operacija nije važeći zbog trenutnog stanja objekta. na (System.Web.HttpRequest.FillInFilesCollection) u (System.Web.HttpRequest.get_Files) u FileUpload.Page_Load (Object sender, EventArgs e) u System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp o objektu, objekat t, EventArgs e) u System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) u System.Web.UI.Control.OnLoad (EventArgs e) u (System.Web.UI.Control.LoadRecursive) u System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint
Poruka 3:
Aplikacija informacije: aplikacija domena: / LM/W3SVC/1/ROOT/< aplikacija za domen > pouzdani nivo: srednji aplikacije virtualne putanje: < VDIR putanja > putanja aplikacije: ime < App putanja > mašine: < ime mašine > proces informacije: ID procesa: 0001Process ime: w3wp.exe naziv računa: IIS izuzetak APPPOOL\DefaultAppPool informacije: tip izuzetka: InvalidOperationException izuzetak poruka: operacija nije važeći zbog trenutnog stanja objekta. u System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary (Int32 dubina) u System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (Int32 dubina) u System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize ("niska za unos", "Int32 depthLimit", "JavaScriptSerializer serializer") u System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (JavaScriptSerializer. serializer za unos niske, tip tip, Int32 depthLimit) na System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject (niska input) u Failing.Page_Load (Object sender, EventArgs e) u System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp o objektu, objekat t, EventArgs e) u System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) u System.Web.UI.Control.OnLoad (EventArgs e) u (System.Web.UI.Control.LoadRecursive) u System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Datoteka za evidenciju IIS prikazuje stavke koja je slična sledećoj:
2011-01-01 00:00:00:: 1 POST /machine/default.aspx - 80 -:: 1-500 0 0 187

Uzrok


Microsoft security ažurirati da bezbednosni bilten MS11-100 adrese menja zadani maksimalni broj obrasca ključeve, datoteke i što su JSON članova koji ASP.NET će prihvatiti zahtev na 1000. Ova promena je napravljena da se pozabave Denial of Service ranjivost da metak u Microsoft security MS11-100 dokumenata.

Rešenje


Aplikacije koje dostignete ovo ograničenje obrasca ključeva ili datoteka možete da izmenite u ASP.NET appSetting aspnet:MaxHttpCollectionKeys, kao što je prikazano ispod u datoteci aplikacije ASP.NET konfiguracije. Ova postavka odnosi greška poruke 1 i greška poruka 2 od „Simptomi” sekcija.
<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>
Napomena Ako koristite ASP.NET 1.1 na sistemu zasnovanom na x86, postavka se koriguje dodavanjem DWORD vrijednost u sljedećem registarskom ključu:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Ako koristite ASP.NET 1.1 na sistemu zasnovanom na x64, postavka se koriguje dodavanjem DWORD vrijednost u sljedećem registarskom ključu:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Aplikacije koje je udario ovo ograničenje za što su JSON nosivost možete da izmenite u ASP.NET appSetting aspnet:MaxJsonDeserializerMembers, kao što je prikazano ispod u datoteci aplikacije ASP.NET konfiguracije. Ova postavka odnosi greška poruka 3 od „Simptomi” sekcija.
<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>
Napomena Povećanje ove vrednosti iznad povećanja podrazumevanu postavku podložnost vašeg servera da Denial of Service ranjivost opisanu u biltenu o sigurnosti MS11-100.

Reference


Za više informacija o bezbednosnom biltenu MS11-100, pogledajte sledeći članak TechNet: Za više informacija, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2638420 MS11-100: Ranjivost u .NET Framework može dozvoliti podizanje privilegija: December 29, 2011