Rezumat
Microsoft security update MS11-100 limite numărul maxim de formular chei, fișierele și JSON membri la 1000 într-o solicitare de HTTP. Din cauza această modificare, aplicații ASP.NET respinge solicitările care au mai mult de 1000 de aceste elemente. Clienții HTTP care face aceste tipuri de solicitări va fi refuzat și va apărea un mesaj de eroare în browserul web. Mesajul de eroare, de obicei, va avea un cod de stare HTTP 500. Această limită noi pot fi configurate în regim per aplicație. Consultați secțiunea "Rezolvare" pentru instrucțiuni de configurare.
Simptome
ASP.NET solicitările care au multe chei de formular, fișiere sau componentă JSON primi un răspuns de eroare de la server. Jurnalul de aplicații pe serverul are o intrare de avertizare cu o sursă de o anumită versiune de ASP.NET, și un ID de eveniment de 1309. Jurnalul de evenimente conține unul dintre următoarele mesaje:
Mesaj 1:
Aplicație informații: domeniu de aplicare: / LM/W3SVC/1/ROOT/< App domeniu > nivel de încredere: mediu aplicație calea virtuală: < cale virtual > Application calea: nume < cale aplicație > mașină: < nume mașină > procesul de informaţii: ID-ul procesului: 0001 nume de proces: w3wp.exe nume cont: informații excepții de APPPOOL\DefaultAppPool IIS: Exception type: mesaj HttpException excepție: date formular URL codificat nu este validă. la System.Web.HttpRequest.FillInFormCollection () la (System.Web.HttpRequest.get_Form) la (System.Web.HttpRequest.get_HasForm) la System.Web.UI.Page.GetCollectionBasedOnMethod (Boolean dontReturnNull) la (System.Web.UI.Page.DeterminePostBackMode) la System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Mesaj 2:
Aplicație informații: domeniu de aplicare: / LM/W3SVC/1/ROOT/< App domeniu > nivel de încredere: mediu aplicație calea virtuală: < cale virtual > Application calea: nume < cale aplicație > mașină: < nume mașină > procesul de informaţii: ID-ul procesului: 0001Process nume: w3wp.exe nume cont: informații excepții de APPPOOL\DefaultAppPool IIS: Exception type: mesaj InvalidOperationException excepție: operațiunea nu este validă din cauza starea curentă a obiectului. la System.Web.HttpRequest.FillInFilesCollection () la (System.Web.HttpRequest.get_Files) la FileUpload.Page_Load (Object sender, EventArgs e) la System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, obiectul t, EventArgs e) la System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) la System.Web.UI.Control.OnLoad (EventArgs e) la (System.Web.UI.Control.LoadRecursive) la System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint
Mesaj 3:
Domeniu de informații: aplicație aplicație: / LM/W3SVC/1/ROOT/< App domeniu > nivel de încredere: mediu aplicație calea virtuală: < cale virtual > Application calea: nume < cale aplicație > mașină: < nume mașină > procesul de informaţii: ID-ul procesului: 0001Process nume: w3wp.exe nume cont: informații excepții de APPPOOL\DefaultAppPool IIS: Exception type: mesaj InvalidOperationException excepție: operațiunea nu este validă din cauza starea curentă a obiectului. la System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary (Int32 adâncime) la System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (Int32 adâncime) la System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (String intrare, Int32 depthLimit, JavaScriptSerializer serializatorului) la System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (JavaScriptSerializer serializatorului șir de intrare, tip, Int32 depthLimit) la System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject (String intrare) la Failing.Page_Load (Object sender, EventArgs e) la System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, obiectul t, EventArgs e) la System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) la System.Web.UI.Control.OnLoad (EventArgs e) la (System.Web.UI.Control.LoadRecursive) la System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Fișierul jurnal IIS arată o intrare care seamănă cu următorul:
2011-01-01 00:00:00:: 1 POST /machine/default.aspx - 80 -:: 1-500 0 0 187
Cauză
Microsoft security update că buletinul de securitate MS11-100 adrese modifică implicit numărul maxim de formular chei, fișierele și membrii JSON care ASP.NET va accepta o cerere de la 1.000. Această modificare s-a făcut pentru a trata vulnerabilitatea Denial of Service că Microsoft security buletinului MS11-100 documente.
Rezolvare
Aplicațiile care ajunge la această limită pentru cheile de formular sau fișiere pot modifica ASP.NET appSetting aspnet:MaxHttpCollectionKeys, așa cum se arată mai jos în fișier de configurare a unei aplicații ASP.NET. Această setare se adresează mesaj de eroare 1 și eroare mesajul 2 din secțiunea "simptome" secțiune.
<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>
Notă Dacă utilizați ASP.NET 1.1 pe un sistem bazat pe x86, setarea se reglează adăugând o valoare DWORD la următoarea cheie de registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Dacă utilizați ASP.NET 1.1 pe un sistem bazat pe x64, setarea se reglează adăugând o valoare DWORD la următoarea cheie de registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Aplicațiile care atins această limită pentru JSON componente pot modifica ASP.NET appSetting aspnet:MaxJsonDeserializerMembers, așa cum se arată mai jos în fișier de configurare a unei aplicații ASP.NET. Această setare se adresează eroare mesaj 3 din "Simptome" secțiune.
<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>
Notă Mărirea această valoare creşte de setarea implicită de mai sus vulnerabilitatea serverul vulnerabilitatea Denial of Service care este discutată în buletinul de securitate MS11-100.
Referințe
Pentru mai multe informații despre buletinul de securitate MS11-100, consultaţi următorul articol TechNet:
Microsoft Security buletinul MS11-100 - criticePentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
2638420 MS11-100: O vulnerabilitate în .NET Framework poate permite sporirea privilegiilor: 29 decembrie 2011