شرح ثغرة XSS بالتفصيل وأنواعها وطرق الحماية

x32x01
  • بواسطة x32x01 ||
ثغرة XSS - Cross-Site Scripting من أكتر الثغرات شيوعًا في عالم الويب، وبتحتل دايمًا مراكز متقدمة في تصنيفات الأمن المعلوماتي زي OWASP. خطورتها مش في إنها تضرب السيرفر نفسه، لكن في إنها تهاجم المستخدم من خلال المتصفح، وده اللي بيخليها مرعبة جدًا في بعض الحالات 😱.

في 2013، مثلًا، موقع Ubuntu Forums اتهاكر بسبب ثغرة XSS، واتسرقت بيانات أكتر من 2 مليون مستخدم، ونفس المشكلة حصلت مع Apple Developer Center!
وده دليل إن XSS ممكن تكون باب لهجمات ضخمة لو الهاكر استغلها صح.

إزاي بتشتغل ثغرة XSS؟ 🧠

فكرة الثغرة ببساطة إن المهاجم بيقدر "يحقن" كود JavaScript خبيث جوه صفحة الويب. الكود ده بيتنفذ في متصفح الضحية، وكأنه جزء من الصفحة الأصلية.
يعني المتصفح بيتخدع وبيتعامل مع الكود كأنه آمن.

وده ممكن يحصل من خلال:
  • إدخال بيانات في نموذج (Form)
  • رابط URL ملغوم
  • تعليق أو رسالة في الموقع

أضرار ثغرة XSS 😈

لو اتنفذت الثغرة بنجاح، المهاجم ممكن يعمل حاجات خطيرة زي:
  1. سرقة حساب المستخدم عن طريق ملفات الـCookies 🍪
  2. تنفيذ أكواد خبيثة داخل المتصفح
  3. زرع برامج تجسس أو Trojan Horse
  4. خداع المستخدم بصفحات تسجيل دخول مزيفة

أنواع ثغرات XSS ⚙️


1. Stored XSS (الثغرة المخزنة)​

ده النوع الأخطر، لأن الكود الخبيث بيتخزن في قاعدة البيانات نفسها.
مثلاً: الهاكر يكتب سكريبت في التعليقات أو الرسائل، ولما أي مستخدم يفتح الصفحة، الكود يتنفذ تلقائيًا.
📘 مثال عملي (تعليمي):
HTML:
<!-- مثال توضيحي فقط -->
<input type="text" name="comment" value="<script>alert('XSS!')</script>">
لو السيرفر ما عملش "تنظيف" للمدخل ده، الكود هيتخزن في قاعدة البيانات ويتنفذ عند عرض التعليق.

2. Reflected XSS (الثغرة العاكسة)​

هنا الكود بيتنفذ من خلال رابط URL ملغوم بدون تخزينه في قاعدة البيانات.
المهاجم يبعت للضحية لينك فيه سكريبت جافاسكريبت، وأول ما يضغط عليه، الكود بيتنفذ.
📘 مثال عملي (تعليمي):
HTML:
<!-- عنوان URL يحتوي كود XSS -->
http://example.com/search?q=<script>alert('Hacked!')</script>
لو السيرفر بيرجع نفس قيمة البحث بدون ترميز، الكود ده هيتنفذ في متصفح المستخدم فورًا.

3. DOM-Based XSS​

ده نوع متقدم بيستغل DOM Tree في المتصفح نفسه.
الهاكر بيغير القيم داخل الصفحة من خلال جافاسكريبت، وبيتحكم في العناصر من غير ما السيرفر يلاحظ.
📘 مثال عملي (تعليمي):
HTML:
// كود غير آمن
document.getElementById("output").innerHTML = location.hash.substring(1);

لو الرابط كان:
HTML:
http://example.com/#<script>alert('DOM XSS')</script>
الكود ده هيتنفذ في المتصفح مباشرة 💥.

إزاي نحمي مواقعنا من ثغرات XSS؟ 🛡️

فيه طرق كتير فعالة، أهمها:

1. لا تثق في مدخلات المستخدم 🚫

أي إدخال من المستخدم لازم يتنظف (sanitize) ويتحقق منه.
📘 مثال آمن بـ PHP:
PHP:
<?php
// تنظيف النص من أكواد HTML
$userInput = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
echo "Welcome, $userInput!";
?>

2. استخدم خاصية Escaping أو Encoding​

يعني ترميز أي مدخل قبل عرضه في الصفحة علشان المتصفح ماينفذوش ككود.

3. فعّل Content Security Policy (CSP)​

CSP بتمنع تنفيذ أي سكريبت مش موثوق.
📘 مثال في الهيدر:
Code:
Content-Security-Policy: default-src 'self'; script-src 'self'

4. استخدم HttpOnly للكوكيز 🍪

الكوكيز اللي متعلم عليها بـ HttpOnly ما تقدرش جافاسكريبت توصلها.
📘 مثال كود PHP:
PHP:
setcookie("session_id", "abc123", [
  "httponly" => true,
  "secure" => true,
  "samesite" => "Strict"
]);

حماية المستخدمين من XSS 👥

حتى لو الموقع مؤمّن، المستخدم كمان عليه دور مهم:
  1. استخدم متصفح محدث وفيه XSS Filter.
  2. ما تفتحش روابط مش موثوقة أو من رسائل غريبة.
  3. سجل خروجك بعد كل جلسة تصفح.
  4. استخدم إضافات حماية زي NoScript أو uBlock Origin.

الخلاصة ⚡

ثغرة XSS مش بسيطة زي ما ناس فاكرة.
هي مش بتكسر السيرفر، لكنها تقدر تكسر المستخدمين وتسرق بياناتهم بسهولة.
عشان كده، أي مطور ويب لازم:
  • ينظف المدخلات ✅
  • يستخدم ترميز HTML ✅
  • يفعّل CSP ✅
  • يختبر موقعه بأدوات زي Burp Suite أو OWASP ZAP 🧰
لو كل ده اتطبق، موقعك هيكون صعب جدًا لأي هجوم XSS ينجح عليه.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
604
x32x01
x32x01
x32x01
الردود
0
المشاهدات
564
x32x01
x32x01
x32x01
الردود
0
المشاهدات
692
x32x01
x32x01
x32x01
الردود
0
المشاهدات
712
x32x01
x32x01
x32x01
الردود
0
المشاهدات
156
x32x01
x32x01
x32x01
الردود
4
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
540
x32x01
x32x01
x32x01
الردود
0
المشاهدات
565
x32x01
x32x01
x32x01
الردود
0
المشاهدات
753
x32x01
x32x01
x32x01
الردود
0
المشاهدات
743
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,836
المشاركات
2,051
أعضاء أكتب كود
460
أخر عضو
jhghk
عودة
أعلى