Eine ASP.NET-Anforderung, die viele Formularschlüssel, Dateien oder Mitglieder der JSON-Nutzlast hat, schlägt mit einer Ausnahme fehl

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 2661403 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Das Microsoft-Sicherheitsupdate MS11-100 begrenzt die Höchstanzahl der Formularschlüssel, Dateien und JSON-Mitglieder in einer HTTP-Anforderung auf 1.000. Diese Änderung wird ASP.NET-Anwendungen Zurückweisungsanforderungen, die mehr als 1.000 dieser Elemente aufweisen. HTTP-Clients mit derartigen Anforderungen werden abgelehnt, und im Webbrowser wird eine Fehlermeldung angezeigt. Die Fehlermeldung hat in der Regel einen HTTP 500-Statuscode. Diese neue Grenze kann auf pro Anwendung konfiguriert werden. Anleitungen zur Konfiguration finden Sie in Abschnitt "Auflösung".


Problembeschreibung

ASP.NET-Anforderungen, die viele Formularschlüssel, Dateien oder eine hohe JSON-Nutzlast haben, empfangen eine Fehlerantwort vom Server. Das Anwendungsprotokoll auf dem Server enthält einen Warnungseintrag mit einer Quelle, bei der es sich um eine spezifische Version von ASP.NET handelt, und die Ereignis-ID "1309". Das Ereignisprotokoll enthält eine der folgenden Meldungen: 


Meldung 1:
Informationen zur Anwendung:
Anwendungsdomäne: /LM/W3SVC/1/ROOT/<App-Domäne>
Vertrauensstufe: Mittel
Virtueller Anwendungspfad: <VDIR-Pfad>
Anwendungspfad: <App-Pfad>
Computername: <Computername>
Prozessinformationen:
Prozess-ID: 0001
Prozessname: w3wp.exe
Kontoname: IIS-APPPOOL\DefaultAppPool

Ausnahmeinformationen:
Ausnahmetyp: HttpException
Ausnahmemeldung: Ungültige URL-codierte Formulardaten.
Bei System.Web.HttpRequest.FillInFormCollection()
Bei System.Web.HttpRequest.get_Form()
Bei System.Web.HttpRequest.get_HasForm()
Bei System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
Bei System.Web.UI.Page.DeterminePostBackMode()
Bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


Meldung 2:
Informationen zur Anwendung:
Anwendungsdomäne: /LM/W3SVC/1/ROOT/<App-Domäne>
Vertrauensstufe: Mittel
Virtueller Anwendungspfad: <VDIR-Pfad>
Anwendungspfad: <App-Pfad>
Computername: <Computername>

Prozessinformationen:
Prozess-ID: 0001
Prozessname: w3wp.exe
Kontoname: IIS-APPPOOL\DefaultAppPool

Ausnahmeinformationen:
Ausnahmetyp: InvalidOperationException
Ausnahmemeldung: Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig.
Bei System.Web.HttpRequest.FillInFilesCollection()
Bei System.Web.HttpRequest.get_Files()
Bei FileUpload.Page_Load(Object sender, EventArgs e)
Bei System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
Bei System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
Bei System.Web.UI.Control.OnLoad(EventArgs e)
Bei System.Web.UI.Control.LoadRecursive()
Bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

Meldung 3:
Informationen zur Anwendung:
Anwendungsdomäne: /LM/W3SVC/1/ROOT/<App-Domäne>
Vertrauensstufe: Mittel
Virtueller Anwendungspfad: <VDIR-Pfad>
Anwendungspfad: <App-Pfad>
Computername: <Computername>

Prozessinformationen:
Prozess-ID: 0001
Prozessname: w3wp.exe
Kontoname: IIS-APPPOOL\DefaultAppPool

Ausnahmeinformationen:
Ausnahmetyp: InvalidOperationException
Ausnahmemeldung: Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig.
Bei System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
Bei System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
Bei System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
Bei System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
Bei System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
Bei Failing.Page_Load(Object sender, EventArgs e)
Bei System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
Bei System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
Bei System.Web.UI.Control.OnLoad(EventArgs e)
Bei System.Web.UI.Control.LoadRecursive()
Bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


Die IIS-Protokolldatei enthält einen Eintrag etwa folgenden Inhalts:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




Ursache

Das Microsoft-Sicherheitsupdate, das im Sicherheitsbulletin MS11-100 beschrieben ist, ändert die standardmäßige Höchstanzahl der Formularschlüssel, Dateien und JSON-Mitglieder, die ASP.NET akzeptiert, in 1.000. Diese Änderung wurde vorgenommen, um das im Microsoft-Sicherheitsbulletin dokumentierte DoS-Sicherheitsrisiko (DoS = Denial of Service) zu adressieren.


Lösung

Anwendungen, die dieses Limit für Formularschlüssel oder Dateien errreichen, können die ASP.NET-AppSetting aspnet:MaxHttpCollectionKeys ändern, wie im Folgenden in einer Konfigurationsdatei einer ASP.NET-Anwendung dargestellt. Diese Einstellung befasst sich mit Fehlermeldung 1 und Fehlermeldung 2 im Abschnitt "Problembeschreibung".
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


Hinweis Wenn Sie ASP.NET 1.1 auf einem x86-basierten System verwenden, wird die Einstellung durch Hinzufügen eines DWORD-Werts zum folgenden Registrierungsschlüssel angepasst:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Wenn Sie ASP.NET 1.1 auf einem x64-basierten System verwenden, wird die Einstellung durch Hinzufügen eines DWORD-Werts zum folgenden Registrierungsschlüssel angepasst:

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



Anwendungen, die dieses Limit für JSON-Nutzlasten erreichen, können die ASP.NET-AppSetting aspnet:MaxJsonDeserializerMembers ändern, wie im Folgenden in einer Konfigurationsdatei einer ASP.NET-Anwendung dargestellt. Diese Einstellung befasst sich mit der Fehlermeldung 3 in Abschnitt "Problembeschreibung".
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



Hinweis Durch Erhöhen dieses Werts über die Standardeinstellung wird die Anfälligkeit des Servers für DoS-Angriffe erhöht, die in Sicherheitsbulletin MS11-100 beschrieben ist.


Informationsquellen

Weitere Informationen zum Sicherheitsbulletin MS11-100 finden Sie im folgenden TechNet-Artikel:
Microsoft-Sicherheitsbulletin MS11-100 ? Kritisch
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2638420 MS11-100: Sicherheitsrisiko im .NET Framework kann eine Erhöhung von Berechtigungen ermöglichen: 29. Dezember 2011

Eigenschaften

Artikel-ID: 2661403 - Geändert am: Donnerstag, 29. November 2012 - Version: 4.0
Die Informationen in diesem Artikel beziehen sich auf:
  • 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, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Windows Vista Service Pack 2, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • 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, wenn verwendet mit:
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
Keywords: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com