Μια αίτηση ASP.NET που περιλαμβάνει πολλά κλειδιά φόρμας, αρχεία ή μέλη φορτίου JSON αποτυγχάνει με την εμφάνιση εξαίρεσης

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 2661403 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Η ενημέρωση ασφάλειας της Microsoft MS11-100 περιορίζει το μέγιστο αριθμό κλειδιών φορμών, αρχείων και μελών JSON μιας αίτησης HTTP σε 1000. Εξαιτίας αυτής της αλλαγής, οι εφαρμογές ASP.NET απορρίπτουν αιτήσεις οι οποίες περιλαμβάνουν περισσότερα από 1000 τέτοιου είδους στοιχεία. Οι αιτήσεις τέτοιου είδους που υποβάλλονται από υπολογιστές-πελάτες HTTP θα απορρίπτονται και θα εμφανίζεται ένα μήνυμα σφάλματος στο πρόγραμμα περιήγησης στο Web. Το μήνυμα σφάλματος συνήθως έχει κωδικό κατάστασης HTTP 500. Η ρύθμιση αυτού του νέου ορίου μπορεί να γίνει ανά εφαρμογή. Ανατρέξτε στην ενότητα "Επίλυση" για οδηγίες σχετικά με τη ρύθμιση παραμέτρων.


Συμπτώματα

Οι αιτήσεις ASP.NET που περιλαμβάνουν πολλά κλειδιά φορμών, αρχεία ή φορτίο JSON λαμβάνουν απόκριση σφάλματος από το διακομιστή. Το αρχείο καταγραφής εφαρμογής στο διακομιστή περιλαμβάνει μια καταχώρηση προειδοποίησης με Προέλευση η οποία είναι μια συγκεκριμένη έκδοση του ASP.NET και αναγνωριστικό συμβάντος 1309. Το αρχείο καταγραφής συμβάντων περιλαμβάνει ένα από τα ακόλουθα μηνύματα:


Μήνυμα 1:
Πληροφορίες εφαρμογής:
Τομέας εφαρμογής: /LM/W3SVC/1/ROOT/<Τομέας εφαρμογής>
Επίπεδο αξιοπιστίας: Μεσαίο
Εικονική διαδρομή της εφαρμογής: <Διαδρομή VDIR>
Διαδρομή εφαρμογής: <Διαδρομή εφαρμογής>
Όνομα υπολογιστή: <Όνομα υπολογιστή>
Πληροφορίες διαδικασίας:
Αναγνωριστικό διαδικασίας: 0001
Όνομα διεργασίας: w3wp.exe
Όνομα λογαριασμού: IIS APPPOOL\DefaultAppPool

Πληροφορίες εξαίρεσης:
Τύπος εξαίρεσης: HttpException
Μήνυμα εξαίρεσης: Τα κατά URL κωδικοποιημένα δεδομένα της φόρμας δεν είναι έγκυρα.
στο System.Web.HttpRequest.FillInFormCollection()
στο System.Web.HttpRequest.get_Form()
στο System.Web.HttpRequest.get_HasForm()
στο System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
στο System.Web.UI.Page.DeterminePostBackMode()
στο System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Μήνυμα 2:
Πληροφορίες εφαρμογής:
Τομέας εφαρμογής: /LM/W3SVC/1/ROOT/<Τομέας εφαρμογής>
Επίπεδο αξιοπιστίας: Μεσαίο
Εικονική διαδρομή της εφαρμογής: <Διαδρομή VDIR>
Διαδρομή εφαρμογής: <Διαδρομή εφαρμογής>
Όνομα υπολογιστή: <Όνομα υπολογιστή>

Πληροφορίες διαδικασίας:
Αναγνωριστικό διαδικασίας: 0001
Όνομα διεργασίας: w3wp.exe
Όνομα λογαριασμού: IIS APPPOOL\DefaultAppPool

Πληροφορίες εξαίρεσης:
Τύπος εξαίρεσης: InvalidOperationException
Μήνυμα εξαίρεσης: Η λειτουργία δεν είναι έγκυρη λόγω της τρέχουσας κατάστασης του αντικειμένου.
στο System.Web.HttpRequest.FillInFilesCollection()
στο System.Web.HttpRequest.get_Files()
στο FileUpload.Page_Load(Object sender, EventArgs e)
στο System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
στο System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
στο System.Web.UI.Control.OnLoad(EventArgs e)
στο System.Web.UI.Control.LoadRecursive()
στο System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

Μήνυμα 3:
Πληροφορίες εφαρμογής:
Τομέας εφαρμογής: /LM/W3SVC/1/ROOT/<Τομέας εφαρμογής>
Επίπεδο αξιοπιστίας: Μεσαίο
Εικονική διαδρομή της εφαρμογής: <Διαδρομή VDIR>
Διαδρομή εφαρμογής: <Διαδρομή εφαρμογής>
Όνομα υπολογιστή: <Όνομα υπολογιστή>

Πληροφορίες διαδικασίας:
Αναγνωριστικό διαδικασίας: 0001
Όνομα διεργασίας: w3wp.exe
Όνομα λογαριασμού: IIS APPPOOL\DefaultAppPool

Πληροφορίες εξαίρεσης:
Τύπος εξαίρεσης: InvalidOperationException
Μήνυμα εξαίρεσης: Η λειτουργία δεν είναι έγκυρη λόγω της τρέχουσας κατάστασης του αντικειμένου.
στο System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
στο System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
στο System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
στο System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
στο System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
στο Failing.Page_Load(Object sender, EventArgs e)
στο System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
στο System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
στο System.Web.UI.Control.OnLoad(EventArgs e)
στο System.Web.UI.Control.LoadRecursive()
στο System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Το αρχείο καταγραφής IIS εμφανίζει μια καταχώρηση παρόμοια με την ακόλουθη:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




Αιτία

Η ενημέρωση ασφάλειας της Microsoft η οποία περιγράφεται στην ανακοίνωση MS11-100 αλλάζει σε 1.000 τον προεπιλεγμένο μέγιστο αριθμό κλειδιών φορμών, αρχείων και μελών JSON που είναι αποδεκτά από το ASP.NET σε αιτήσεις. Αυτή η αλλαγή πραγματοποιήθηκε για την αντιμετώπιση της ευπάθειας άρνησης υπηρεσίας που καταγράφεται στην ανακοίνωση ασφάλειας της Microsoft MS11-100.


Προτεινόμενη αντιμετώπιση

Για τις εφαρμογές που συμπληρώνουν αυτό το όριο για κλειδιά φορμών ή αρχεία, μπορεί να τροποποιηθεί η ρύθμιση ASP.NET appSetting aspnet:MaxHttpCollectionKeys με τον τρόπο που υποδεικνύεται στο ακόλουθο αρχείο ρύθμισης παραμέτρων μιας εφαρμογής ASP.NET. Αυτή η ρύθμιση αντιμετωπίζει τα μηνύματα σφάλματος 1 και 2 που περιγράφονται στην ενότητα "Συμπτώματα".
<configuration>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
</configuration>


Σημείωση Εάν χρησιμοποιείτε ASP.NET 1.1 σε σύστημα που βασίζεται σε επεξεργαστή x86, η ρύθμιση προσαρμόζεται με την προσθήκη μιας τιμής DWORD στο ακόλουθο κλειδί του μητρώου:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Εάν χρησιμοποιείτε ASP.NET 1.1 σε σύστημα που βασίζεται σε επεξεργαστή x86, η ρύθμιση προσαρμόζεται με την προσθήκη μιας τιμής DWORD στο ακόλουθο κλειδί του μητρώου:

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



Για τις εφαρμογές που συμπληρώνουν αυτό το όριο για φορτία JSON, μπορεί να τροποποιηθεί η ρύθμιση ASP.NET appSetting aspnet:MaxJsonDeserializerMembers με τον τρόπο που υποδεικνύεται στο ακόλουθο αρχείο ρύθμισης παραμέτρων μιας εφαρμογής ASP.NET. Αυτή η ρύθμιση αντιμετωπίζει το μήνυμα σφάλματος 3 που περιγράφεται στην ενότητα "Συμπτώματα".
<configuration>
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" />
</appSettings>
</configuration>



Σημείωση Η αύξηση αυτής της τιμής σε αριθμό μεγαλύτερο από την προεπιλεγμένη ρύθμιση αυξάνει τις πιθανότητες εμφάνισης του θέματος ευπάθειας άρνησης υπηρεσίας που περιγράφεται στο δελτίο ασφαλείας MS11-100 στο διακομιστή σας.


Αναφορές

Για περισσότερες πληροφορίες σχετικά με το ενημερωτικό δελτίο ασφαλείας MS11-100, ανατρέξτε στο ακόλουθο άρθρο TechNet:
Ανακοινώσεις ασφαλείας της Microsoft: MS11-100 - Κρίσιμη
Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής βάσης της Microsoft:
2638420 MS11-100: Ένα θέμα ευπάθειας στο .NET Framework θα μπορούσε να επιτρέψει προβιβασμό δικαιωμάτων: 29 Δεκεμβρίου 2011

Ιδιότητες

Αναγν. άρθρου: 2661403 - Τελευταία αναθεώρηση: Πέμπτη, 29 Νοεμβρίου 2012 - Αναθεώρηση: 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 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 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 Service Pack 2 στις ακόλουθες πλατφόρμες
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Service Pack 2 για Windows Vista στις ακόλουθες πλατφόρμες
    • 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 στις ακόλουθες πλατφόρμες
    • 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 στις ακόλουθες πλατφόρμες
    • Microsoft Windows XP Home Edition
    • Microsoft Windows XP Professional
Λέξεις-κλειδιά: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403

Αποστολή σχολίων

 

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