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

تلقي رسالة الخطأ "عدم تطابق النوع" للبرنامج النصي VBScript في Internet Explorer بعد تثبيت التحديث الأمني التراكمي رقم ٩٧٤٤٥٥

مقدمة
يقدم التحديث الأمني التراكمي رقم ٩٧٤٤٥٥ لبرنامج Internet Explorer (الموضح في MS09-054) عمليات فحص إضافية لأمان "النوع" بأساليب متنوعة لمواجهة الثغرات الأمنية المعروفة. فضمن سيناريوهات محددة، قد تؤدي هذه الفحوصات الجديدة للنوع إلى حدوث أخطاء "عدم تطابق النوع" بالبرنامج النصي في صفحات الويب التي تستخدم VBScript أو في صفحات الويب التي تستخدم خليطًا من VBScript وJavaScript.

لمزيد من المعلومات حول MS09-054، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft" :
974455MS09-054: التحديث الأمني التراكمي لبرنامج Internet Explorer
الأعراض
قد تحدث أخطاء "عدم تطابق النوع" بالبرنامج النصي في صفحات الويب التي تستخدم VBScript كلغة برمجة نصية من جانب العميل. كما يمكن أن تحدث أيضًا في صفحات الويب التي تستخدم الأسلوب showModalDialog() أو showModelessDialog(). قامت Microsoft بتعريف الثلاثة سيناريوهات التالية التي قد تؤدي إلى حدوث الخطأ "عدم تطابق النوع" بالبرنامج النصي:
  • showModalDialog()
    يتضمن السيناريو الأول تمرير قيمة Array() كمعلمة إلى الأسلوب showModalDialog() في VBScript. يعمل الأسلوب showModalDialog() على دعم وسيطة واحدة مطلوبة (sURL) ووسيطتين اختياريتين (vArguments وsFeatures). وتعتبر المعلمة vArguments معلمة من النوع المتغير التي تحدد المعلمات المطلوب استخدامها عند عرض المستند. فإذا قرر مطور ما تمرير Array() بشكل مباشر إلى معلمة vArguments الاختيارية، فسوف يحدث خطأ "عدم تطابق النوع" بالبرنامج النصي.

    لمزيد من المعلومات حول الأسلوب showModalDialog، قم بزيارة صفحة Microsoft MSDN التالية على الويب:
  • showModelessDialog()
    يتضمن السيناريو الثاني تمرير قيمة Array() كمعلمة إلى الأسلوب showModelessDialog() في VBScript. ويعمل الأسلوب showModelessDialog() على دعم وسيطة واحدة مطلوبة (sURL) ووسيطتين اختياريتين (vArguments وsFeatures). وتعتبر المعلمة vArguments معلمة من النوع المتغير التي تحدد المعلمات المطلوب استخدامها عند عرض المستند. فإذا قرر مطور ما تمرير Array() بشكل مباشر إلى معلمة vArguments الاختيارية، فسوف يحدث خطأ "عدم تطابق النوع" بالبرنامج النصي.

    لمزيد من المعلومات حول الأسلوب showModelessDialog()، قم بزيارة صفحة Microsoft MSDN التالية على الويب:
  • returnValue
    يتضمن السيناريو الثالث الإعداد الواضح للخاصية returnValue لإحدى نوافذ مربعات الحوار المشروطة. والخاصية returnValue هي خاصية قراءة/كتابة ليست لها قيمة افتراضية. ووفقًا للوثائق المنشورة على MSDN، تنطبق الخاصية returnValue فقط على النوافذ التي تم إنشاؤها باستخدام الأسلوب showModalDialog(). فإذا قرر مطور ما تعيين الخاصية returnValue، الخاصة بإحدى نوافذ مربعات الحوار المشروطة، بشكل صريح لإحدى قيم Array() في VBScript، فسوف يحدث الخطأ "عدم تطابق النوع" بالبرنامج النصي.

    لمزيد من المعلومات حول الخاصية return Value، قم بزيارة صفحة Microsoft MSDN التالية على الويب:
في الوقت الحالي، لم تلاحظ Microsoft حدوث أخطاء "عدم تطابق النوع" بالبرنامج النصي عند استخدام التحديث الأمني التراكمي رقم ٩٧٤٤٥٥ في صفحات الويب التي تستخدم JavaScript باعتبارها لغة البرمجة النصية الوحيدة من جانب العميل. تظهر هذه المشكلة فقط في صفحات الويب التي تستخدم الأسلوب showModalDialog() أو الأسلوب showModelessDialog() أو الخاصية returnValue في VBScript. وإذا كانت صفحة الويب تحتوي على خليط من VBScript وJavaScript معًا، قد تظهر بها هذه المشكلة إذا كانت صفحة الويب تستخدم الأساليب أو الخصائص التي تمت مناقشتها سابقًا في VBScript أو إذا كانت صفحة الويب تستخدم الكائن VBArray. ويعتبر استخدام VBArray غير شائع. لذلك، لن تتم مناقشة السيناريوهات التي تتضمن VBArray في مقالة قاعدة المعارف هذه.
السبب
تم إصدار التحديث الأمني التراكمي لبرنامج Internet Explorer رقم MS09-054 لمواجهة الثغرات الأمنية المعروفة في برنامج Internet Explorer. وكجزء من التحديث الأمني التراكمي، يقدم برنامج Internet Explorer عمليات فحص جديدة لمواجهة التحويل غير المقصود للمعلمات ذات النوع المتغير في أنواع البيانات الخطيرة. وتتضمن عمليات الفحص الإضافية قيود أمنية إضافية على المعلمات من النوع المتغير التي يتم تمريرها كجزء من المتغيرات التي يتم التحكم فيها بواسطة المستخدم وذلك من أجل حماية المستخدم من أنواع معينة من الهجمات. وقد تؤثر هذه الفحوصات الإضافية على سيناريوهات الاستعراض الشرعية التي تستخدم أنواع البيانات المتغيرة.
الحل
لحل هذه المشكلة، قم بتثبيت التحديث رقم ٩٧٦٧٤٩ بعد تثبيت التحديث الأمني التراكمي رقم ٩٧٤٤٥٥. لمزيد من المعلومات حول هذه المشكلة، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft" :
976749توفر تحديث لبرنامج Internet Explorer من أجل حل المشكلات التي تحدث بعد تطبيق التحديث الأمني ٩٧٤٤٥٥ (MS09-054)

هام لا تقم بتثبيت التحديث رقم ٩٧٦٧٤٩ إذا لم يكن قد تم تثبيت التحديث الأمني رقم ٩٧٤٤٥٥. فإذا تم تثبيت التحديث رقم ٩٧٦٧٤٩ بدون تثبيت التحديث الأمني التراكمي رقم ٩٧٤٤٥٥ أولاً، قد لا يعمل برنامج Internet Explorer بطريقة صحيحة. في حالة حدوث هذا، قم بإزالة تثبيت التحديث رقم ٩٧٦٧٤٩، ثم قم بتثبيت التحديث الأمني قم ٩٧٤٤٥٥، وبعد ذلك قم بإعادة تثبيت التحديث رقم ٩٧٦٧٤٩.
الحل البديل
نوصي بالاستمرار في استخدام التحديث الأمني التراكمي رقم ٩٧٤٤٥٥ وتثبيت التحديث رقم ٩٧٦٧٤٩ إذا واجهت الأعراض الموضحة في هذه المقالة. سيعرض العملاء الذين قرروا إزالة التحديث الأمني التراكمي أجهزتهم للخطر.

بالنسبة للسيناريو الأول والأخير الموضح في القسم "الأعراض"، يمكنك استخدام حل بديل إذا كنت تريد تثبيت التحديث الأمني رقم ٩٧٤٤٥٥. يمكن تمرير الصفائف إلى الأسلوب showModalDialog() أو showModelessDialog() دون حدوث خطأ "عدم تطابق النوع" بالبرنامج النصي.

على سبيل المثال، سيتسبب VBScript التالي في حدوث خطأ "عدم تطابق النوع" بالبرنامج النصي.
// TYPE MISMATCHvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
سيقوم VBScript التالي بتمرير صفيف إلى الأسلوب showModalDialog() أو showModelessDialog() دون حدوث خطأ "عدم تطابق النوع" بالبرنامج النصي.
// NO TYPE MISMATCH ERRORDim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
بالنسبة للسيناريو الثالث الذي تم توضيحه مسبقًا، يمكنك استخدام حل بديل إذا لم تكن تريد تثبيت التحديث الأمني رقم ٩٧٤٤٥٥. لإيجاد حل بديل للمشكلة الموجودة في السيناريوهات التي يتم فيها تمرير قيمة Array() ذات بُعد واحد إلى الخاصية returnValue، استخدم الدالتين Join وSplit VBScript. سيتيح لك هذا إمكانية تمرير قيم Array() إلى الخاصية returnValue.

على سبيل المثال، سيتسبب VBScript التالي في حدوث خطأ "عدم تطابق النوع" بالبرنامج النصي.
// TYPE MISMATCHDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
عند استخدام الدالتين Join وSplit VBScript، يمكنك تعيين الخاصية returnValue دون حدوث خطأ "عدم تطابق النوع" بالبرنامج النصي.
// NO TYPE MISMATCH ERRORDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrayItems = Split(strTemp, ";")
بالنسبة للسيناريو الثالث الموضح أعلاه، والذي يتم فيه تمرير قيم Array() متعددة الأبعاد أو قيم Array() التي تحتوي على كائنات إلى الخاصية returnValue، يمكنك استخدام حل بديل إذا كنت لا تريد تثبيت التحديث الأمني رقم ٩٧٤٤٥٥. ولإيجاد حل بديل للمشكلة الموجودة في هذا السيناريو، يمكنك استخدام الدالة JavaScript لتعيين الخاصية returnValue. وتتوفر دالة JavaScript هذه لوحدات الروتين الفرعي والدلائل الخاصة بالبرنامج النصي VBScript. وستكون أية قيمة لخاصية returnValue، تم تعيينها بواسطة الدالة JavaScript، متوفرة للبرنامج النصي VBScript.

على سبيل المثال، سيتسبب VBScript التالي في حدوث خطأ "عدم تطابق النوع" بالبرنامج النصي.
// TYPE MISMATCH<script LANGUAGE=vbscript>Option ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
عند استخدام الدالة JoinJavaScript بجانب البرنامج النصي VBScript، يمكنك تعيين الخاصية returnValue دون حدوث خطأ "عدم تطابق النوع" بالبرنامج النصي.
// NO TYPE MISMATCH ERROR<script Language=JavaScript>function setReturnValue(){var returnValueArray= new Array();returnValueArray[0] = 1;returnValueArray[1] = 2;returnValueArray[2] = 3;window.returnValue = returnValueArray;}</script><script LANGUAGE=vbscript??Option ExplicitSub Window_OnLoadsetReturnValue()msgbox window.returnValueEnd Sub</script>
تصريح
أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في القسم "تنطبق على".
خصائص

رقم الموضوع: 976949 - آخر مراجعة: 12/03/2009 18:43:19 - المراجعة: 3.1

Windows Internet Explorer 8, Windows Internet Explorer 7, Microsoft Internet Explorer 6.0, Microsoft Internet Explorer 6.0 SP1, Microsoft Internet Explorer 5.01 Service Pack 4

  • kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949
تعليقات
html>>[0].appendChild(m); setLanguage(language);" class="ng-binding" id="language-es-es">España - Español
Paraguay - Español
Venezuela - Español
/c1.microsoft.com/c.gif?DI=4050&did=1&t=">r varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("