Sammanfattning

Microsofts säkerhetsuppdatering MS11-100 gränser maximalt antal formulär nycklar, filer och JSON-medlemmar till 1000 i en HTTP-begäran. ASP.NET-program avvisa begäranden som har mer än 1000 av dessa element på grund av denna ändring. HTTP-klienter som gör dessa typer av begäranden kommer att nekas och ett felmeddelande visas i webbläsaren. Felmeddelandet har vanligtvis en HTTP 500-statuskod. Denna nya gräns kan konfigureras på basis per program. Se avsnittet ”lösning” för instruktioner för konfigurering.

Symptom

ASP.NET-begäranden som har massor av formuläret nycklar, filer eller JSON-nyttolasten får ett felsvar från servern. Programloggen på servern har en varning transaktion med en källa som en viss version av ASP.NET och händelse-ID 1309. Händelseloggen innehåller något av följande meddelanden:

Meddelande 1:

Programinformation: programdomän: / LM/W3SVC/1/ROOT/< programdomänen > förtroendenivå: medel programmets virtuella sökväg: < VDIR sökväg > sökvägen till programmet: < App-sökväg > datornamn: < datornamn > processinformation: Process-ID: 0001 Processnamn: w3wp.exe kontonamn: IIS APPPOOL\DefaultAppPool Undantagsinformation: undantagstyp: HttpException Undantagsmeddelande: det URL-kodade formulärdata är inte giltig. vid System.Web.HttpRequest.FillInFormCollection () i System.Web.HttpRequest.get_Form () i (System.Web.HttpRequest.get_HasForm) vid System.Web.UI.Page.GetCollectionBasedOnMethod (booleska dontReturnNull) på (System.Web.UI.Page.DeterminePostBackMode) vid System.Web.UI.Page.ProcessRequestMain (booleska includeStagesBeforeAsyncPoint, booleska includeStagesAfterAsyncPoint)

Meddelande 2:

Programinformation: programdomän: / LM/W3SVC/1/ROOT/< programdomänen > förtroendenivå: medel programmets virtuella sökväg: < VDIR sökväg > sökvägen till programmet: < App-sökväg > datornamn: < datornamn > processinformation: Process-ID: 0001Process namn: w3wp.exe kontonamn: IIS APPPOOL\DefaultAppPool Undantagsinformation: undantagstyp: InvalidOperationException Undantagsmeddelande: åtgärden är inte giltig på grund av objektets aktuella tillstånd. vid System.Web.HttpRequest.FillInFilesCollection () i (System.Web.HttpRequest.get_Files) vid FileUpload.Page_Load (objekt avsändare, Händelseargument kan e) vid System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, o objekt, objekt t, Händelseargument kan e) vid System.Web.Util.CalliEventHandlerDelegateProxy.Callback (objekt avsändare, Händelseargument kan e) vid System.Web.UI.Control.OnLoad (Händelseargument kan e) vid System.Web.UI.Control.LoadRecursive () vid System.Web.UI.Page.ProcessRequestMain (booleska includeStagesBeforeAsyncPoint

Meddelande 3:

Information: programmet programdomän: / LM/W3SVC/1/ROOT/< programdomänen > förtroendenivå: medel virtuella sökvägen till programmet: < VDIR sökväg > sökvägen till programmet: < App-sökväg > datornamn: < datornamn > processinformation: Process-ID: 0001Process namn: w3wp.exe kontonamn: IIS APPPOOL\DefaultAppPool Undantagsinformation: undantagstyp: InvalidOperationException Undantagsmeddelande: åtgärden är inte giltig på grund av objektets aktuella tillstånd. vid System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary (Int32 djup) vid System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (Int32 djup) vid System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (stränginmatning, Int32 depthLimit, JavaScriptSerializer serialiseraren) vid System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (JavaScriptSerializer serialisering, stränginmatning, typ typ, Int32 depthLimit) vid System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject (String indata) vid Failing.Page_Load (objekt avsändare, Händelseargument kan e) vid System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, o objekt, objekt t, Händelseargument kan e) vid System.Web.Util.CalliEventHandlerDelegateProxy.Callback (objekt avsändare, Händelseargument kan e) vid System.Web.UI.Control.OnLoad (Händelseargument kan e) vid (System.Web.UI.Control.LoadRecursive) vid System.Web.UI.Page.ProcessRequestMain (booleska includeStagesBeforeAsyncPoint, booleska includeStagesAfterAsyncPoint)

IIS-loggen visar en post av följande slag:

2011-01-01 00:00:00:: 1 POST /machine/default.aspx - 80 -:: 1 500 0 0 187

Orsak

Microsoft security update att security bulletin MS11-100 adresser ändras standardantalet formulär nycklar, filer och JSON-medlemmar som accepterar ASP.NET i en begäran till 1 000. Den här ändringen gjordes till DOS-säkerhetsproblem som Microsoft security säkerhetsbulletinen MS11-100 dokument.

Lösning

Program som når denna gräns för formuläret nycklar eller filer kan ändra ASP.NET appSetting aspnet:MaxHttpCollectionKeys, som visas nedan i konfigurationsfilen för ett ASP.NET-program. Den här inställningen åtgärdar fel meddelande 1 och fel meddelande 2 från ”symptom” avsnitt.

<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>

OBS! Om du använder ASP.NET 1.1 på en dator med x86 justeras genom att lägga till ett DWORD-värde i följande registernyckel:

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

Om du använder ASP.NET 1.1 på en dator med x64 justeras genom att lägga till ett DWORD-värde i följande registernyckel:

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

Program som nått den här gränsen för JSON-nyttolaster kan ändra ASP.NET appSetting aspnet:MaxJsonDeserializerMembers, som visas nedan i konfigurationsfilen för ett ASP.NET-program. Den här inställningen åtgärdar fel meddelande 3 från ”symptom” avsnitt.

<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>

OBS! Om du ökar värdet för ovanstående standard inställningen ökar mottaglighet för servern för DOS-säkerhetsproblem som beskrivs i säkerhetsbulletin MS11-100.

Referenser

Mer information om säkerhetsbulletinen MS11-100 finns i följande TechNet-artikel:

Microsoft Security Bulletin MS11-100 - kritiskOm du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

2638420 MS11-100: Säkerhetsproblem i.NET Framework möjliggör behörighetshöjning: den 29 December 2011

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Hur nöjd är du med översättningskvaliteten?
Vad påverkade din upplevelse?

Tack för din feedback!

×