ما هو XSS (البرمجة عبر المواقع)؟
البرمجة عبر المواقع، أو XSS، هي خلل أمني في المواقع الإلكترونية يسمح للمهاجمين بإضافة سكربتات ضارة إلى صفحات الويب. في معظم الأحيان، تُكتب هذه السكربتات بلغة JavaScript.
إذا قام شخص ما بزيارة صفحة متأثرة بـ XSS، يقوم المتصفح بتشغيل سكربت المهاجم. يمكن أن يؤدي ذلك إلى سرقة الكوكيز، أو اختطاف الجلسات، أو تنفيذ إجراءات دون إذن المستخدم.
XSS، مثل حقن SQL، يُدرج بانتظام في قائمة OWASP Top 10 كواحد من أكثر الثغرات شيوعًا في تطبيقات الويب.
كيف يعمل XSS؟
غالبًا ما يستهدف XSS تطبيقات الويب التي لا تتحقق وتُنظف مدخلات المستخدم بشكل صحيح.
على سبيل المثال، إذا كان صندوق التعليقات يسمح بـ HTML الخام أو JavaScript دون أي تصفية، يمكن للمهاجم إضافة كود مثل هذا:
<script>alert('تم الاختراق!');</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 (تزوير الطلب عبر المواقع)