📚 محتوى دفاعي بحت: الهدف منع الثغرة.
ما هي XSS؟
Cross-Site Scripting: تحدث عندما يُعرَض إدخال المستخدم في الصفحة دون تهريب، فيتمكّن محتوى خبيث من التنفيذ في متصفّحات الزوّار (سرقة جلسات، تشويه الصفحة).
السبب الجذري
إدراج محتوى غير موثوق مباشرة في HTML:
// ❌ خطر: إدراج إدخال المستخدم كـ HTML خام
element.innerHTML = userInput;
الحلّ 1: التهريب (Escaping)
اعرض المحتوى كنصّ لا كـ HTML:
// ✅ آمن: نصّ فقط
element.textContent = userInput;
الحلّ 2: الأطر الحديثة تهرّب تلقائيًّا
React و Vue و Angular وقوالب Django تهرّب المخرجات افتراضيًّا:
<div>{userInput}</div> // React يهرّبه تلقائيًّا — آمن
⚠️ تجنّب المنافذ الخطرة مثل
dangerouslySetInnerHTML(React) و|safe(Django) على محتوى غير موثوق.
الحلّ 3: تطهير HTML الموثوق جزئيًّا
إن لزم عرض HTML من المستخدم، طهّره بمكتبة موثوقة (DOMPurify) تزيل العناصر الخطرة.
الحلّ 4: Content Security Policy (CSP)
ترويسة تحدّ مصادر السكربتات المسموح بها — طبقة دفاع إضافية:
Content-Security-Policy: default-src 'self'
💡 القاعدة: عامل كل إدخال مستخدم كنصّ، واهرّبه عند العرض، ولا تثق به أبدًا.
🎯 التالي: الحماية من CSRF.