أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

فشل طلب ASP.NET الذي يتضمن الكثير من مفاتيح النماذج أو الملفات أو عناصر حمولات JSON مع عرض استثناء

انتهاء دعم نظام التشغيل Windows XP

لقد أنهت شركة Microsoft دعم Windows XP في 8 أبريل، 2014. وقد أثر هذا التغيير على تحديثات البرامج لديك وخيارات الأمان الخاصة بك. تعرف على ما يعنيه ذلك فيما يتعلق بك وكيفية الحفاظ على حمايتك.

انتهي دعم Windows Server 2003 في 14 يوليو 2015!

أنهت شركة Microsoft دعم نظام التشغيل Windows Server 2003 في 14 يوليو 2015. لقد أثر هذا التغيير على تحديثات البرامج لديك وخيارات الأمان الخاصة بك. تعرف على ما يعنيه ذلك فيما يتعلق بك وكيفية الحفاظ على حمايتك.

الموجز
يقصر التحديث الأمني من Microsoft رقم MS11-100 عدد مفاتيح النماذج والملفات وعناصر حمولات JSON لتصل إلى ١٠٠٠ بحد أقصى في طلب HTTP. وبسبب هذا التغيير، ترفض تطبيقات ASP.NET الطلبات التي تزيد فيها هذه العناصر عن ١٠٠٠. وسيتم رفض عملاء HTTP التي تقوم بإعداد هذه الأنواع من الطلبات، وستظهر رسالة خطأ في مستعرض الويب. وعادةً ما يكون لرسالة الخطأ رمز الحالة HTTP 500. يمكن تكوين هذا الحد الجديد على أساس كل تطبيق. الرجاء مراجعة القسم "الحل" للحصول على إرشادات التكوين.


الأعراض
تتلقى طلبات ASP.NET ـ التي تحتوي على الكثير من مفاتيح النماذج أو الملفات أو حمولة JSON ـ استجابة خطأ من الخادم. ويتضمن سجل التطبيقات الموجود على الخادم إدخال تحذيري يشتمل على مصدر يتمثل في نسخة خاصة من ASP.NET، و"مُعرّف الحدث" رقم ١٣٠٩. أما سجل الأحداث فيحتوي على واحدة من الرسائل التالية:


الرسالة الأولى:
معلومات التطبيق:
    مجال التطبيق: /LM/W3SVC/1/ROOT/<App Domain>
    مستوى الثقة: متوسط
    المسار الظاهري للتطبيق: <VDIR Path>
    مسار التطبيق: <App Path>
    اسم الجهاز: <Machine Name>
معلومات العملية:
    مُعرّف العملية: 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)


الرسالة الثانية:
معلومات التطبيق:
    مجال التطبيق: /LM/W3SVC/1/ROOT/<App Domain>
    مستوى الثقة: متوسط
    المسار الظاهري للتطبيق: <VDIR Path>
    مسار التطبيق: <App Path>
    اسم الجهاز: <Machine Name>

معلومات العملية:
    مُعرّف العملية: 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

الرسالة الثالثة:
معلومات التطبيق:
    مجال التطبيق: /LM/W3SVC/1/ROOT/<App Domain>
    مستوى الثقة: متوسط
    المسار الظاهري للتطبيق: <VDIR Path>
    مسار التطبيق: <App Path>
    اسم الجهاز: <Machine Name>

معلومات العملية:
    مُعرّف العملية: 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ـ على تغيير الحد الأقصى الافتراضي لعدد مفاتيح النماذج والملفات وعناصر JSON التي سيقبلها تطبيق ASP.NET في أي طلب إلى ١٠٠٠. وقد تم إجراء هذا التغيير للتعامل مع ثغرة قطع الخدمة التي توثقها نشرة الأمان رقم MS11-100 من Microsoft.


الحل
يمكن للتطبيقات التي تصل إلى هذا الحد من حيث عدد مفاتيح النماذج أو الملفات تعديل ASP.NET appSetting aspnet:MaxHttpCollectionKeys، كما هو موضح أدناه في ملف التكوين الخاص بتطبيق ASP.NET. يتعامل هذا الإعداد مع رسالتي الخطأ الأولى والثانية في القسم "الأعراض".
<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 على نظام يستند إلى x64، فسيتم ضبط الإعداد عن طريق إضافة قيمة DWORD إلى مفتاح التسجيل التالي:

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



يمكن للتطبيقات التي تصل إلى هذا الحد فيما يتعلق بحمولات JSON تعديل ASP.NET appSetting aspnet:MaxJsonDeserializerMembers، كما هو موضح أدناه في ملف التكوين الخاص بتطبيق ASP.NET. يتعامل هذا الإعداد مع رسالة الخطأ الثالثة في القسم "الأعراض".
<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>



ملاحظة تؤدي زيادة هذه القيمة عن الإعداد الافتراضي إلى زيادة سرعة تأثر الخادم لديك بثغرة "قطع الخدمة" التي تناولناها في نشرة الأمان رقم MS11-100.


مراجع
لمزيد من المعلومات حول نشرة الأمان MS11-100، انظر مقالة TechNet التالية: لمزيد من المعلومات انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":
2638420 MS11-100: قد يسمح وجود ثغرة أمنية في .NET Framework برفع الامتيازات: 29 ديسمبر 2011
خصائص

رقم الموضوع: 2661403 - آخر مراجعة: 11/29/2012 14:32:00 - المراجعة: 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, Windows Vista Service Pack 2, Microsoft Windows Server 2003 Service Pack 2, Microsoft Windows XP Service Pack 3

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
تعليقات
t=">