Jesteś obecnie w trybie offline. Czekamy na ponowne połączenie z Internetem.

Żądanie ASP.NET zawierające wiele kluczy formularzy, plików lub elementów ładunku JSON kończy się niepowodzeniem z powodu wyjątku

Zakończono świadczenie pomocy technicznej dla systemu Windows XP

Firma Microsoft zakończyła świadczenie pomocy technicznej dla systemu Windows XP 8 kwietnia 2014. Ta zmiana wpłynęła na Twoje aktualizacje oprogramowania i opcje zabezpieczeń. Dowiedz się, co to oznacza dla Ciebie i jak zapewnić sobie kontynuację ochrony.

Świadczenie pomocy technicznej dla systemu Windows Server 2003 zakończono 14 lipca 2015.

Firma Microsoft zakończyła świadczenie pomocy technicznej dla systemu Windows Server 2003 14 lipca 2015. Ta zmiana wpłynęła na Twoje aktualizacje oprogramowania i opcje zabezpieczeń. Dowiedz się, co to oznacza dla Ciebie i jak zapewnić sobie kontynuację ochrony.

Streszczenie
Aktualizacja zabezpieczeń firmy Microsoft MS11-100 ogranicza maksymalną liczbę kluczy formularzy, plików i elementów JSON w żądaniu HTTP do 1000. Z powodu tej zmiany aplikacje ASP.NET odrzucają żądania zawierające więcej niż 1000 tych elementów. Tego rodzaju żądania wysyłane przez klienta HTTP zostają odrzucone, a w przeglądarce sieci Web pojawia się komunikat o błędzie. Komunikat o błędzie ma zwykle kod stanu HTTP 500. Ten nowy limit można skonfigurować dla poszczególnych aplikacji. Instrukcje dotyczące konfiguracji zawarto w sekcji „Rozwiązanie”.


Symptomy
Na żądania ASP.NET zawierające wiele kluczy formularzy, plików lub elementów JSON serwer odpowiada komunikatem o błędzie. W dzienniku aplikacji na serwerze znajduje się wpis ostrzeżenia, w którym jako Źródło wskazana jest konkretna wersja programu ASP.NET, a zdarzenie ma identyfikator 1309. Dziennik zdarzeń zawiera jeden z następujących komunikatów:


Komunikat 1:
Informacje o aplikacji:
Domena aplikacji: /LM/W3SVC/1/ROOT/<domena_aplikacji>
Poziom zaufania: Średni
Ścieżka wirtualna aplikacji: <ścieżka_VDIR>
Ścieżka aplikacji: <ścieżka_aplikacji>
Nazwa komputera: <nazwa_komputera>
Informacje o procesie:
Identyfikator procesu: 0001
Nazwa procesu: w3wp.exe
Nazwa konta: IIS APPPOOL\DefaultAppPool

Informacje o wyjątku:
Typ wyjątku: HttpException
Komunikat o wyjątku: Dane formularza kodowane za pomocą adresu URL są nieprawidłowe.
w System.Web.HttpRequest.FillInFormCollection()
w System.Web.HttpRequest.get_Form()
w System.Web.HttpRequest.get_HasForm()
w System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
w System.Web.UI.Page.DeterminePostBackMode()
w System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Komunikat 2:
Informacje o aplikacji:
Domena aplikacji: /LM/W3SVC/1/ROOT/<domena_aplikacji>
Poziom zaufania: Średni
Ścieżka wirtualna aplikacji: <ścieżka_VDIR>
Ścieżka aplikacji: <ścieżka_aplikacji>
Nazwa komputera: <nazwa_komputera>

Informacje o procesie:
Identyfikator procesu: 0001
Nazwa procesu: w3wp.exe
Nazwa konta: IIS APPPOOL\DefaultAppPool

Informacje o wyjątku:
Typ wyjątku: InvalidOperationException
Komunikat o wyjątku: Ze względu na bieżący stan obiektu operacja jest nieprawidłowa.
w System.Web.HttpRequest.FillInFilesCollection()
w System.Web.HttpRequest.get_Files()
w FileUpload.Page_Load(Object sender, EventArgs e)
w System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
w System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
w System.Web.UI.Control.OnLoad(EventArgs e)
w System.Web.UI.Control.LoadRecursive()
w System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

Komunikat 3:
Informacje o aplikacji:
Domena aplikacji: /LM/W3SVC/1/ROOT/<domena_aplikacji>
Poziom zaufania: Średni
Ścieżka wirtualna aplikacji: <ścieżka_VDIR>
Ścieżka aplikacji: <ścieżka_aplikacji>
Nazwa komputera: <nazwa_komputera>

Informacje o procesie:
Identyfikator procesu: 0001
Nazwa procesu: w3wp.exe
Nazwa konta: IIS APPPOOL\DefaultAppPool

Informacje o wyjątku:
Typ wyjątku: InvalidOperationException
Komunikat o wyjątku: Ze względu na bieżący stan obiektu operacja jest nieprawidłowa.
w System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
w System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
w System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
w System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
w System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
w Failing.Page_Load(Object sender, EventArgs e)
w System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
w System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
w System.Web.UI.Control.OnLoad(EventArgs e)
w System.Web.UI.Control.LoadRecursive()
w System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


W dzienniku programu IIS znajduje się wpis podobny do następującego:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




Przyczyna
Aktualizacja zabezpieczeń firmy Microsoft opisana w biuletynie zabezpieczeń MS11-100 zmienia domyślną maksymalną liczbę kluczy formularzy, plików i elementów JSON akceptowaną w żądaniu przez program ASP.NET na 1000. Tę zmianę wprowadzono w celu wyeliminowania luki w zabezpieczeniach umożliwiającej atak typu „odmowa usługi” udokumentowanej w biuletynie zabezpieczeń firmy Microsoft MS11-100.


Rozwiązanie
W przypadku aplikacji, które osiągają ten limit dla kluczy formularzy lub plików, można zmodyfikować pozycję programu ASP.NET appSetting aspnet:MaxHttpCollectionKeys, jak pokazano poniżej, w pliku konfiguracji aplikacji ASP.NET. To ustawienie rozwiązuje problem z komunikatami o błędach 1 i 2 z sekcji „Symptomy”.
<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>


Uwaga W razie używania wersji ASP.NET 1.1 w systemie opartym na procesorach x86 to ustawienie dopasowuje się, dodając wartość DWORD do następującego klucza rejestru:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
W razie używania wersji ASP.NET 1.1 w systemie opartym na procesorach x64 to ustawienie dopasowuje się, dodając wartość DWORD do następującego klucza rejestru:

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



W przypadku aplikacji, które osiągają ten limit dla ładunków JSON, można zmodyfikować pozycję programu ASP.NET appSetting aspnet:MaxJsonDeserializerMembers, jak pokazano poniżej, w pliku konfiguracji aplikacji ASP.NET. To ustawienie rozwiązuje problem z komunikatem o błędzie 3 z sekcji „Symptomy”.
<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>



Uwaga Zwiększenie powyższej wartości ponad ustawienie domyślne zwiększa podatność serwera na zagrożenie atakiem typu „odmowa usługi” z wykorzystaniem luki w zabezpieczeniach omówionej w biuletynie zabezpieczeń MS11-100.


Materiały referencyjne
Aby uzyskać więcej informacji o biuletynie zabezpieczeń MS11-100, zobacz następujący artykuł w witrynie TechNet: Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2638420 MS11-100: Luka w zabezpieczeniach programu .NET Framework umożliwia podniesienie uprawnień: 29 grudnia 2011
Właściwości

Identyfikator artykułu: 2661403 — ostatni przegląd: 11/29/2012 14:36:00 — zmiana: 4.0

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 Framework 1.1, Microsoft .NET Framework 1.0 Service Pack 3, Microsoft .NET Framework 1.0, Windows 7 Service Pack 1, 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 Service Pack 2, Dodatek Service Pack 2 do systemu Windows Vista, Microsoft Windows Server 2003 Service Pack 2, Microsoft Windows XP Service Pack 3

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
Opinia