يُطلق على أحد أكثر فئات الثغرات الأمنية شيوعًا في مواقع الويب "البرمجة النصية عبر المواقع" أو "XSS". ثغرات XSS هي المكان الذي يمكن فيه للمستخدم أن يتسبب في تنفيذ JavaScript. هناك عدد من المتغيرات المختلفة لضعف XSS ، بدرجات متفاوتة من الخطورة.
تكمن مشكلة قدرة المهاجم على تنفيذ JavaScript في جلسات المستخدمين الآخرين في أنه يمكن للمهاجم بعد ذلك القيام بأي شيء على موقع الويب الذي يراه الضحايا. يتضمن ذلك إعادة توجيه الضحايا إلى مواقع ويب خارجية ، وسرقة رموز المصادقة ، ومراقبة تفاصيل الدفع.
إن أكثر أشكال ثغرات XSS خطورة هي البرمجة النصية عبر المواقع "المخزنة" أو "المستمرة" ، وهذا هو المكان من الممكن للمهاجم أن يصنع حمولة XSS ثم يرسلها ، لذلك يتم حفظها في قاعدة البيانات. مع استغلال XSS المحفوظ في قاعدة البيانات ، يمكن حينئذٍ أن يؤثر على المستخدمين الآخرين خلال فترة زمنية واسعة.
شكل آخر من أشكال البرمجة النصية عبر المواقع هو "انعكاس" ، ولا يتم حفظ هذا النوع في أي وقت ، وبدلاً من ذلك ، يتم تضمين الحمولة في المتصفح. عادةً ما يكون هذا النوع من XSS جزءًا من هجمات التصيد الاحتيالي ، حيث يحاول المهاجم خداع الضحية للنقر فوق ارتباط ضار.
بشكل عام ، تحتوي معظم هجمات XSS على الحمولة المرسلة إلى الخادم في مرحلة ما ، ولكن بعض الهجمات تكون كذلك من جانب العميل البحت ، لا يتم إرساله أبدًا إلى الخادم وبدلاً من ذلك يؤثر فقط على جانب العميل جافا سكريبت. يسمى هذا XSS المستند إلى DOM لأنه يظل في نموذج كائن مستند JavaScript ، أو DOM. يصعب تحديد هذا النوع من الثغرات الأمنية وحلها لأن الثغرات لا يراها الخادم مطلقًا وبالتالي لا يمكن تسجيلها.
تاريخيًا ، كانت تقنية الوقاية ضد ثغرات XSS هي تصفية جميع البيانات التي يرسلها المستخدم ، باستخدام قوائم الحظر لرفض أي رسائل ذات أحرف أو كلمات ذات معنى في JavaScript. أدى هذا إلى حدوث سباق تسلح في العثور على تجاوزات للمرشح مع منع بعض عمليات إرسال المستخدمين المشروعة. الحل الصحيح هو استخدام كيانات HTML لتشفير البيانات المقدمة من المستخدم. مع تمكين وحدات كيانات HTML ، يتم تشفير الأحرف تلقائيًا إلى تنسيق يعرف المتصفح أنه يعرضها كرموز صحيحة ولكن لا يتعامل معها كرموز.