ما هو XSS (البرمجة النصية عبر المواقع)؟
البرمجة النصية عبر المواقع، أو XSS، هي خلل أمني في المواقع الإلكترونية يسمح للمهاجمين بإضافة نصوص ضارة إلى صفحات الويب. في معظم الأحيان، تُكتب هذه النصوص بلغة JavaScript.
إذا قام شخص بزيارة صفحة متأثرة بـ XSS، يقوم المتصفح بتشغيل نص المهاجم. يمكن أن يؤدي ذلك إلى سرقة ملفات تعريف الارتباط، اختراق الجلسات، أو تنفيذ إجراءات دون إذن المستخدم.
XSS، مثل حقن SQL، يُدرج بانتظام في OWASP Top 10 كواحد من أكثر نقاط ضعف تطبيقات الويب شيوعًا.

كيف يعمل XSS؟
غالبًا ما يستهدف XSS تطبيقات الويب التي لا تتحقق وتقوم بتنظيف مدخلات المستخدم بشكل صحيح.
على سبيل المثال، إذا كان صندوق التعليقات يسمح بـ HTML الخام أو JavaScript دون أي تصفية، يمكن للمهاجم إضافة كود مثل هذا:
<script>alert('Hacked!');</script>
عندما يشاهد الضحايا الصفحة، يتم تشغيل الكود الضار داخل متصفحهم.
لماذا يهم XSS في الأمن السيبراني
يمكن أن يؤدي XSS إلى اختراق أكبر:
- السيطرة على الحساب (سرقة ملفات تعريف الارتباط للجلسة لانتحال شخصية المستخدمين)
- سرقة البيانات (التقاط مدخلات النماذج مثل كلمات المرور أو بطاقات الائتمان)
- هجمات التصيد الاحتيالي (حقن نماذج تسجيل دخول وهمية)
- تسليم البرمجيات الخبيثة (إعادة توجيه المستخدمين إلى مواقع ضارة)
أنواع XSS
- XSS المستند إلى DOM
- يحدث الهجوم بالكامل في المتصفح عن طريق التلاعب بنموذج كائن المستند (DOM) دون إشراك الخادم.
- XSS المخزن
- يتم تخزين البرنامج النصي الضار بشكل دائم على الخادم، مثل قاعدة البيانات أو صفحة الملف الشخصي.
- XSS المنعكس
- يتم عكس البرنامج النصي من خادم الويب (مثل في عنوان URL أو رسالة خطأ)، وسيتم تنفيذ البرنامج النصي عندما ينقر الضحية على الرابط المصمم من قبل المهاجمين.
كيفية منع XSS
- تنقية المدخلات وترميز المخرجات: تنظيف بيانات إدخال المستخدم دائمًا قبل معالجتها، وتحويل إدخال المستخدم إلى صيغة آمنة
- استخدام سياسة أمان المحتوى (CSP): تقيد ما يمكن تنفيذه من برامج نصية في المتصفح.
- تجنب eval() وجافا سكريبت المضمنة: لتقليل مخاطر الحقن.
- اختبار الأمان (DAST/IAST): إجراء اختبار الأمان للكشف عن الثغرات في وقت مبكر
مثال في حالة واقعية - دودة سامي (MySpace، 2005)
ما حدث: نشر سامي كامكار ملفًا شخصيًا على MySpace يحتوي على حمولة XSS المخزن. عندما شاهد المستخدمون الآخرون الملف الشخصي، تم تشغيل الحمولة في متصفحاتهم، حيث (أ) أضاف سامي كصديق، (ب) أضاف عبارة “سامي هو بطلي” إلى ملفاتهم الشخصية، و (ج) نسخ نفسه إلى صفحات ملفات هؤلاء المستخدمين.
التأثير: انتشرت الدودة ذاتيًا إلى حوالي مليون مستخدم في غضون ~20 ساعة، مما أجبر MySpace على التوقف مؤقتًا.
لماذا نجح: سمح MySpace باستخدام HTML/السمات غير المفلترة في حقول الملف الشخصي، مما أتاح تنفيذ البرامج النصية المخزنة في متصفحات الزوار.
الدروس / الإصلاح: الترميز الصحيح للإخراج، تنقية المدخلات، إزالة HTML في حقول الملف الشخصي، والتحديث السريع. واجه سامي لاحقًا عواقب قانونية، ونشرت MySpace مرشحات.
مصطلحات ذات صلة
- حقن SQL
- DAST (اختبار أمان التطبيقات الديناميكي)
- OWASP Top 10
- CSRF (تزوير الطلب عبر المواقع)