تاريخ النشر الأصلي: 9 ديسمبر 2025
معرف KB: 5074596
الملخص
يعرض Windows PowerShell 5.1 الآن مطالبة تأكيد أمان عند استخدام الأمر Invoke-WebRequest لإحضار صفحات الويب بدون معلمات خاصة. تحذر هذه المطالبة من إمكانية تشغيل البرامج النصية في الصفحة أثناء التحليل وتنصح باستخدام المعلمة -UseBasicParsing الآمنة لتجنب أي تنفيذ للبرنامج النصي. يجب على المستخدمين اختيار متابعة العملية أو إلغائها. يساعد هذا التغيير في الحماية من محتوى الويب الضار من خلال طلب موافقة المستخدم قبل الإجراءات التي يحتمل أن تكون محفوفة بالمخاطر.
يؤثر هذا التغيير بشكل أساسي على البيئات المدارة من قبل المؤسسة أو تكنولوجيا المعلومات حيث يتم استخدام البرامج النصية PowerShell للأتمتة واسترجاع محتوى الويب. لا تحتاج الأشخاص استخدام الأجهزة في الإعدادات الشخصية أو المنزلية بشكل عام إلى اتخاذ أي إجراء، لأن هذه السيناريوهات غير شائعة خارج عمليات النشر المدارة بواسطة تكنولوجيا المعلومات.
ما الذي تغير؟
-
السلوك السابق
-
تحليل نموذج كائن المستند الكامل (DOM) باستخدام مكونات Internet Explorer (واجهة HTMLDocument (mshtml))، والتي يمكن أن تنفذ البرامج النصية من المحتوى الذي تم تنزيله.
-
-
سلوك جديد
-
موجه تأكيد الأمان: بعد تثبيت تحديثات Windows التي تم إصدارها في 9 ديسمبر 2025 أو بعد ذلك، سيؤدي تشغيل الأمر Invoke-WebRequest (المعروف أيضا باسم curl) في PowerShell 5.1 إلى تشغيل مطالبة أمان (عندما لا يتم استخدام معلمة خاصة). تظهر المطالبة في وحدة تحكم PowerShell مع تحذير حول مخاطر تنفيذ البرنامج النصي. وهذا يعني أن PowerShell معطلة لتحذيك من أنه بدون احتياطات، يمكن تنفيذ محتوى البرنامج النصي لصفحة الويب على نظامك عند معالجته. بشكل افتراضي، إذا قمت بالضغط على مفتاح الإدخال Enter (أو اختر لا)، إلغاء العملية للأمان. سيعرض PowerShell رسالة تفيد بأنه تم إلغاؤه بسبب مخاوف أمنية، ويقترح إعادة تشغيل الأمر باستخدام المعلمة -UseBasicParsing للمعالجة الآمنة. إذا اخترت نعم، فسيتابع PowerShell تحليل الصفحة باستخدام الأسلوب الأقدم (تحليل HTML الكامل)، مما يعني أنه سيحمل المحتوى وأي برامج نصية مضمنة كما كانت عليه. بشكل أساسي، يعني اختيار نعم أنك تقبل المخاطر وتسمح بتشغيل الأمر كما كان من قبل، بينما يؤدي اختيار لا (الافتراضي) إلى إيقاف الإجراء لحمايتك.
-
الاستخدام التفاعلي مقابل الاستخدام النصي: يؤثر إدخال هذه المطالبة بشكل أساسي على الاستخدام التفاعلي. في الجلسات التفاعلية، سترى التحذير ويتعين عليك الاستجابة. بالنسبة إلى البرامج النصية التلقائية (سيناريوهات غير تفاعلية مثل المهام المجدولة أو مسارات CI)، قد تتسبب هذه المطالبة في توقف البرنامج النصي في انتظار الإدخال. لتجنب ذلك، نوصي بتحديث مثل هذه البرامج النصية لاستخدام المعلمات الآمنة بشكل صريح (انظر أدناه)، مع التأكد من أنها لا تتطلب تأكيدا يدويا.
-
اتخاذ إجراء
ستستمر معظم البرامج النصية والأوامر PowerShell التي تستخدم الأمر Invoke-WebRequest في العمل مع القليل من التعديل أو بدون تعديل. على سبيل المثال، لا تتأثر البرامج النصية التي تقوم فقط بتنزيل المحتوى أو تعمل مع نص الاستجابة كنص أو بيانات ولا تتطلب أي تغييرات.
إذا كان لديك برامج نصية تتأثر بهذا التغيير، فاستخدم أحد الأساليب التالية.
لا يلزم اتخاذ أي إجراء إذا كان الاستخدام النموذجي للأمر Invoke-WebRequest هو إحضار المحتوى (مثل تنزيل الملفات أو قراءة نص ثابت) ولا تعتمد على تفاعل الموقع المتقدم أو تحليل HTML DOM. السلوك الافتراضي الجديد أكثر أمانا - لن يتم تشغيل البرامج النصية المضمنة في محتوى الويب دون إذنك - وهذا هو التكوين الموصى به لمعظم السيناريوهات.
للاستخدام التفاعلي، ما عليك سوى الاستجابة لا لمطالبة الأمان الجديدة (أو اضغط على Enter لقبول الإعداد الافتراضي) وأعد تشغيل الأمر باستخدام المعلمة -UseBasicParsing لاسترداد المحتوى بأمان. سيؤدي ذلك إلى تجنب تنفيذ أي تعليمة برمجية للبرنامج النصي في الصفحة التي تم جلبها. إذا كنت تقوم بإحضار محتوى الويب بشكل تفاعلي بشكل متكرر، ففكر في استخدام المعلمة -UseBasicParsing بشكل افتراضي في أوامرك لتخطي المطالبة تماما وضمان أقصى قدر من الأمان.
بالنسبة إلى البرامج النصية التلقائية أو المهام المجدولة، قم بتحديثها لتضمين المعلمة -UseBasicParsing على استدعاءات Invoke-WebRequest. يحدد هذا السلوك الآمن مسبقا بحيث لا تظهر المطالبة ويستمر تشغيل البرنامج النصي الخاص بك دون انقطاع. من خلال القيام بذلك، يمكنك التأكد من أن التشغيل التلقائي الخاص بك يعمل بسلاسة بعد التحديث مع الاستمرار في الاستفادة من الأمان المحسن.
بالنسبة إلى البرامج النصية أو الأتمتة التي تتعامل مع محتوى ويب غير موثوق به أو عام وتتطلب معالجة هياكل أو نماذج HTML، ضع في اعتبارك إعادة بناء التعليمات البرمجية أو تحديثها للأمان على المدى الطويل. بدلا من الاعتماد على PowerShell لتحليل البرامج النصية لصفحة الويب التي يحتمل أن تكون خطرة وتشغيلها، يمكنك:
-
استخدم أساليب أو مكتبات تحليل بديلة (على سبيل المثال، تعامل مع محتوى صفحة الويب كنص عادي أو XML، باستخدام مكتبات تحليل regex أو XML/HTML التي لا تنفذ البرامج النصية).
-
قم بتحديث نهجك لتفاعلات الويب، ربما باستخدام PowerShell Core الأحدث (الإصدار 7.x أو أحدث) الذي لا يعتمد على محرك Internet Explorer ويتجنب تشغيل البرامج النصية، أو باستخدام أدوات استخراج الويب المتخصصة التي تتعامل مع المحتوى بشكل أكثر أمانا.
-
الحد من الاعتماد على الميزات الخاصة ب Internet Explorer، نظرا لأن Internet Explorer مهمل. خطط لإعادة كتابة أجزاء من البرامج النصية التي تعتمد على هذه الميزات حتى تتمكن من العمل في بيئة تتم فيها معالجة محتوى الويب بأمان.
-
الهدف من إعادة بناء التعليمات البرمجية هو تحقيق وظائفك المطلوبة دون تعريض نفسك لمخاطر الأمان، وبالتالي تبني الإعدادات الافتراضية الأكثر أمانا التي يقدمها هذا التغيير.
إذا كانت لديك حاجة محددة لاستخدام أوامر Invoke-WebRequest إمكانات تحليل HTML الكاملة (مثل التفاعل مع حقول النماذج أو استخراج البيانات المنظمة) وكنت تثق بمصدر محتوى الويب، فلا يزال بإمكانك متابعة سلوك التحليل القديم على أساس كل حالة على حدة. في الجلسات التفاعلية، هذا يعني ببساطة اختيار نعم في مطالبة التأكيد للسماح بمتابعة العملية. ستتلقى تذكيرا بالمخاطر الأمنية في كل مرة تقوم فيها بذلك. يجب أن يقتصر المتابعة بدون المعلمة -UseBasicParsing على السيناريوهات التي تثق فيها بشكل كامل بمحتوى الويب (على سبيل المثال، تطبيقات الويب الداخلية تحت سيطرتك أو مواقع الويب الآمنة المعروفة).
هام: لا يوصى بهذا الأسلوب بالنسبة إلى البرامج النصية التي تعمل مقابل محتوى ويب غير موثوق به أو عام، لأنه يعيد تقديم خطر تنفيذ البرنامج النصي الصامت الذي يهدف هذا التحديث إلى التخفيف منه. أيضا، بالنسبة للأتمتة غير التفاعلية، لا توجد آلية مضمنة للموافقة تلقائيا على المطالبة، لذلك لا ينصح بالاعتماد على التحليل الكامل في البرامج النصية (بالإضافة إلى كونه محفوفا بالمخاطر). استخدم هذا الخيار باعتدال وفقط كإجراء مؤقت.
الأسئلة المتداولة
بالنسبة لمعظم الحالات، ستظل البرامج النصية التي تقوم بتنزيل الملفات أو إحضار محتوى الويب كنص تعمل؛ أضف المعلمة -UseBasicParsing لتجنب المطالبات. قد تعلق البرامج النصية التي تستخدم تحليل HTML المتقدم (مثل النماذج أو DOM) البيانات الأولية أو إخراجها بدلا من العناصر المنظمة؛ ستحتاج إلى التبديل إلى التحليل الأساسي أو تعديل البرنامج النصي الخاص بك للتعامل مع المحتوى بشكل مختلف.
استخدم دائما المعلمة -UseBasicParsing مع الأمر Invoke-WebRequest في البرامج النصية PowerShell لضمان التنفيذ الآمن وغير التفاعلي.
نعم. يجب تحديث البرامج النصية اعتمادا على التحليل القديم للاشتراك أو إعادة بناء التعليمات البرمجية.
ينطبق التغيير في PowerShell على كل من التحديثات القياسية وتحديثات hotpatch، ما يؤدي إلى تغيير السلوك نفسه.
نعم. يستخدم PowerShell 7 بالفعل التحليل الآمن بشكل افتراضي.
اتصل بمالكي الوحدة النمطية للحصول على خطط الدعم. استخدم الاشتراك مؤقتا للمحتوى الموثوق به أثناء الترحيل.
للتحضير لهذا التغيير والتحقق من صحته، نوصيك بما يلي:
-
تحديد البرامج النصية باستخدام ميزات DOM.
-
اختبار الأتمتة مع الإعداد الافتراضي الجديد.
-
قصر الاشتراك القديم على المصادر الموثوق بها.
-
خطط لإعادة بناء التعليمات البرمجية للمحتوى غير الموثوق به.