
البرمجة النصية عبر المواقع (XSS) هي تقنية هجوم تتضمن إعادة عرض كود يوفره المهاجم داخل متصفح المستخدم. يمكن أن تكون نسخة المتصفح عميل متصفح ويب قياسي أو كائن متصفح مدمج في منتج برمجي مثل المتصفح داخل WinAmp، أو قارئ RSS، أو عميل بريد إلكتروني. عادةً ما يُكتب الكود نفسه بلغة HTML/JavaScript، ولكنه قد يمتد أيضًا إلى VBScript أو ActiveX أو Java أو Flash أو أي تقنية أخرى يدعمها المتصفح.
عندما يجعل المهاجم متصفح المستخدم ينفذ الكود الخاص به، سيعمل الكود ضمن سياق الأمان (أو المنطقة) للموقع المضيف. بهذا المستوى من الامتيازات، يمكن للكود قراءة أي بيانات حساسة يمكن للمتصفح الوصول إليها وتعديلها ونقلها. قد يُختطف حساب مستخدم تعرّض لهجوم البرمجة النصية عبر المواقع (سرقة ملفات تعريف الارتباط)، أو يُعاد توجيه متصفحه إلى مكان آخر، أو ربما يُعرض عليه محتوى احتيالي يقدمه الموقع الذي يزوره. تقوّض هجمات البرمجة النصية عبر المواقع بشكل أساسي علاقة الثقة بين المستخدم والموقع. قد تنفذ التطبيقات التي تستخدم كائنات متصفح تحمّل محتوى من نظام الملفات كودًا ضمن منطقة الجهاز المحلي، مما يسمح باختراق النظام.
هناك ثلاثة أنواع من هجمات البرمجة النصية عبر المواقع: غير المستمرة، والمستمرة، والقائمة على DOM.
تتطلب الهجمات غير المستمرة والهجمات القائمة على DOM من المستخدم إما زيارة رابط مصمم خصيصًا ومحمل بكود خبيث أو زيارة صفحة ويب خبيثة تحتوي على نموذج ويب، وعند إرساله إلى الموقع الضعيف، سيشن الهجوم. غالبًا ما يحدث استخدام نموذج خبيث عندما يقبل المورد الضعيف طلبات HTTP POST فقط. في هذه الحالة، يمكن إرسال النموذج تلقائيًا دون علم الضحية (على سبيل المثال باستخدام JavaScript). عند النقر على الرابط الخبيث أو إرسال النموذج الخبيث، سيتم إعادة عرض حمولة XSS وسيتم تفسيرها وتنفيذها بواسطة متصفح المستخدم. تقنية أخرى لإرسال طلبات شبه عشوائية (GET و POST) هي استخدام عميل مدمج، مثل Adobe Flash.
تحدث الهجمات المستمرة عندما يتم إرسال الكود الخبيث إلى موقع ويب حيث يُخزن لفترة من الوقت. تشمل الأمثلة على الأهداف المفضلة للمهاجمين غالبًا منشورات لوحات الرسائل، ورسائل البريد الإلكتروني عبر الويب، وبرامج الدردشة عبر الويب. لا يُطلب من المستخدم غير المنتبه التفاعل مع أي موقع/رابط إضافي (مثل موقع المهاجم أو رابط خبيث يُرسل عبر البريد الإلكتروني)، فقط مجرد عرض صفحة الويب التي تحتوي على الكود.