انتقل إلى محتوى الدرس

Preventing Regex Backtracking ReDoS الوقاية من بطء الأنماط ReDoS

أتقن التعبيرات النمطية RegExp في JavaScript من صياغة الأنماط والأعلام وفئات المحارف والمراسي ودوال test وmatchAll إلى الوقاية من بطء التراجع ReDoS.
5 صفوف تعليمية
جافا سكريبت
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تنشأ ثغرة حجب الخدمة بالتعبيرات النمطية (ReDoS) عند كتابة نمط غامض يضم مكممات متداخلة مثل /(a+)+$/ وتمرير نص طويل ينتهي بحرف غير مطابق؛ إذ يجرب المحرك ملايين المسارات التراجعية الأسية قبل إعلان الفشل مما يجمد تبويب المتصفح أو يعطل الخادم تماماً!

احمِ تطبيقاتك من بطء ReDoS بثلاث قواعد صارمة:

  • امنع تداخل المكممات التكرارية مثل (x+)+ واستبدلها بنمط خطي بسيط x+ أو مدى محدد {1,64}.
  • افحص طول المدخلات أولاً (str.length <= 254) قبل تمريرها لأي نمط معقد.
  • لا تمرر نصاً كتبه المستخدم مباشرةً إلى new RegExp(userInput) دون تهريب رموزه الخاصة!
الصف 2 ملاحظة هامة
الصف 3 ملاحظة هامة
الصف 4 ملاحظة هامة
الصف 5 ملاحظة هامة
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس التعبيرات النمطية RegExp بصيغتيها الحرفية والديناميكية، والأعلام الأساسية، وفئات المحارف والمراسي والمكممات، ودوال test وmatchAll وreplace، والوقاية من ثغرات التراجع الكارثي ReDoS. الخطوة التالية: انتقل إلى درس «اكتشاف وتصحيح الأخطاء البرمجية في JavaScript» لإتقان أدوات التشخيص وجداول المراقبة ونقاط التوقف.