تخطي إلى المحتوى الرئيسي
الدعم
تسجيل الدخول باستخدام حساب Microsoft
تسجيل الدخول أو إنشاء حساب.
مرحباً،
تحديد استخدام حساب مختلف!
لديك حسابات متعددة
اختر الحساب الذي تريد تسجيل الدخول باستخدامه.

الموجز

يقصر التحديث الأمني من 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 رقم MS11-100 - Critical لمزيد من المعلومات انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

2638420 MS11-100: قد يسمح وجود ثغرة أمنية في .NET Framework برفع الامتيازات: 29 ديسمبر 2011

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.

هل كانت المعلومات مفيدة؟

ما مدى رضاك عن جودة اللغة؟
ما الذي أثّر في تجربتك؟
بالضغط على "إرسال"، سيتم استخدام ملاحظاتك لتحسين منتجات Microsoft وخدماتها. سيتمكن مسؤول تكنولوجيا المعلومات لديك من جمع هذه البيانات. بيان الخصوصية.

نشكرك على ملاحظاتك!

×