Ισχύει για
.NET Framework 3.5 Service Pack 1 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 Server 2008 Web Edition Windows Vista Service Pack 2 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 XP Professional x64 Edition Microsoft Windows XP Service Pack 3 Microsoft Windows XP Home Edition Microsoft Windows XP Professional

Περίληψη

Η ενημέρωση ασφάλειας της 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

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.