Una richiesta ASP.NET contenente molte chiavi del modulo modulo, file o membri di payload JSON non riesce con un'eccezione

Traduzione articoli Traduzione articoli
Identificativo articolo: 2661403 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sommario

L'aggiornamento della sicurezza Microsoft MS11-100 limita il numero massimo di chiavi del modulo, file e membri JSON a 1000 in una richiesta HTTP. A causa di questa modifica, le applicazioni ASP.NET rifiutano le richieste con più di 1000 elementi di questo tipo. Verranno rifiutati i client HTTP che effettuano questi tipi di richieste e verrà visualizzato un messaggio di errore nel browser Web. Il messaggio di errore conterrà un codice di stato 500 HTTP. È possibile che questo nuovo limite venga configurato in base all'applicazione. Per istruzioni relative alla configurazione, vedere la sezione "Risoluzione".


Sintomi

Per le richieste ASP.NET con molte chiavi del modulo, file oppure payload JSON viene visualizzata una risposta di errore dal server. Il registro applicazioni sul server dispone di un Avviso con un'Origine che rappresenta una versione specifica di ASP.NET e un ID evento di 1309. Il registro eventi contiene uno dei seguenti messaggi:


Messaggio 1:
Informazioni dell'applicazione:
Dominio dell'applicazione: /LM/W3SVC/1/ROOT/<App Domain>
Livello di attendibilità: Medio
Percorso virtuale dell'applicazione: <Percorso VDIR>
Percorso dell'applicazione: <Percorso app>
Nome computer: <Nome computer>
Informazioni sul processo:
ID processo: 0001
Nome processo: w3wp.exe
Nome account: IIS APPPOOL\DefaultAppPool

Informazioni sull'eccezione:
Tipo di eccezione: HttpException
Messaggio eccezione: I dati del modulo con codifica URL non sono validi.
in System.Web.HttpRequest.FillInFormCollection()
in System.Web.HttpRequest.get_Form()
in System.Web.HttpRequest.get_HasForm()
in System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
in System.Web.UI.Page.DeterminePostBackMode()
in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Messaggio 2:
Informazioni dell'applicazione:
Dominio dell'applicazione: /LM/W3SVC/1/ROOT/<App Domain>
Livello di attendibilità: Medio
Percorso virtuale dell'applicazione: <Percorso VDIR>
Percorso dell'applicazione: <Percorso app>
Nome computer: <Nome computer>

Informazioni sul processo:
ID processo: 0001
Nome processo: w3wp.exe
Nome account: IIS APPPOOL\DefaultAppPool

Informazioni sull'eccezione:
Tipo di eccezione: InvalidOperationException
Messaggio eccezione: Operazione non valida a causa dello stato corrente dell'oggetto.
in System.Web.HttpRequest.FillInFilesCollection()
in System.Web.HttpRequest.get_Files()
in FileUpload.Page_Load(Object sender, EventArgs e)
in System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
in System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
in System.Web.UI.Control.OnLoad(EventArgs e)
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

Messaggio 3:
Informazioni dell'applicazione:
Dominio dell'applicazione: /LM/W3SVC/1/ROOT/<App Domain>
Livello di attendibilità: Medio
Percorso virtuale dell'applicazione: <Percorso VDIR>
Percorso dell'applicazione: <Percorso app>
Nome computer: <Nome computer>

Informazioni sul processo:
ID processo: 0001
Nome processo: w3wp.exe
Nome account: IIS APPPOOL\DefaultAppPool

Informazioni sull'eccezione:
Tipo di eccezione: InvalidOperationException
Messaggio eccezione: Operazione non valida a causa dello stato corrente dell'oggetto.
in System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
in System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
in System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
in System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
in System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
in Failing.Page_Load(Object sender, EventArgs e)
in System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
in System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
in System.Web.UI.Control.OnLoad(EventArgs e)
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Il file di registro IIS visualizza una voce simile alla seguente:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




Cause

L'aggiornamento della sicurezza Microsoft relativo al Bollettino Microsoft sulla sicurezza MS11-100 modifica il numero massimo predefinito di chiavi del modulo, file e membri JSON che ASP.NET accetterà in una richiesta a 1.000. Questa modifica è stata introdotta per risolvere il problema di vulnerabilità Denial of Service documentato nel Bollettino Microsoft sulla sicurezza MS11-100.


Risoluzione

Le applicazioni che raggiungono questo limite per le chiavi del modulo o per i file possono modificare l'impostazione dell'applicazione (appSetting) ASP.NET aspnet:MaxHttpCollectionKeys, come mostrato in un file di configurazione dell'applicazione ASP.NET. Questa impostazione risolve il messaggio di errore 1 e 2 dalla sezione "Sintomi".
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


Nota Se si utilizza ASP.NET 1.1 in un sistema basato su x86, l'impostazione viene modificata aggiungendo un valore DWORD alla seguente chiave del Registro di sistema:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Se si utilizza ASP.NET 1.1 in un sistema basato su x64, l'impostazione viene modificata aggiungendo un valore DWORD alla seguente chiave del Registro di sistema:

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



Le applicazioni che riscontrano questo limite per i payload JSON possono modificare l'impostazione dell'applicazione (appSetting) ASP.NET aspnet:MaxJsonDeserializerMembers, come mostrato in un file di configurazione dell'applicazione ASP.NET. Questa impostazione risolve il messaggio di errore 3 dalla sezione "Sintomi".
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



Nota L'aumento di questo valore al di sopra dell'impostazione predefinita, aumenta la sensibilità del server relativa al problema di vulnerabilità Denial of Service illustrato nel Bollettino Microsoft sulla sicurezza MS11-100.


Riferimenti

Per ulteriori informazioni sul Bollettino Microsoft sulla sicurezza MS11-100, vedere il seguente articolo TechNet:
Bollettino Microsoft sulla sicurezza MS11-100 - Critico
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2638420 MS11-100: Possibile elevazione dei privilegi a causa di vulnerabilità in .NET Framework: 29 dicembre 2011

Proprietà

Identificativo articolo: 2661403 - Ultima modifica: giovedì 29 novembre 2012 - Revisione: 4.0
Le informazioni in questo articolo si applicano a:
  • 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 alle seguenti piattaforme
    • 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 alle seguenti piattaforme
    • 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 alle seguenti piattaforme
    • 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 alle seguenti piattaforme
    • 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 alle seguenti piattaforme
    • 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 alle seguenti piattaforme
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
Chiavi: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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