تخطَّ إلى المحتوى
المدونة
اختبار الاختراق

ما هي ثغرة XSS؟

شرح ثغرة XSS (Cross-Site Scripting) وأنواعها الثلاثة Reflected وStored وDOM-based، ومخاطرها مثل سرقة الجلسة والتصيد، وطرق الحماية للمستخدم والمطور.

بيبرس محمد

4 دقائق قراءة

حُدّث في

غلاف مقال: ما هي ثغرة XSS؟

ثغرة XSS (Cross-Site Scripting) تنتج عن عدم فلترة مُدخلات المستخدم، فتتيح للمهاجم حقن سكربتات جافاسكربت تُنفَّذ في متصفح زوار الموقع الذين يثقون به. أنواعها Reflected وStored وDOM-based، ويُحمى منها بفلترة جميع حقول الإدخال وتفعيل علمي httponly وsecure على الكوكيز.

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

ما هي ثغرة XSS ؟

مخطط آلية هجوم XSS: حقن المهاجم سكربت خبيث في الموقع ثم تنفيذه في متصفح الزائر وصولاً إلى سرقة بيانات الجلسة

ثغرة XSS، أو Cross-Site Scripting، هي واحدة من أشهر الهجمات السامة على الويب.

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

بمعنى آخر، يتم استغلال موقع الويب المصاب كوسيلة لاختراق وإيذاء الزوار الذين يثقون فيه.

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

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

ما هي ثغرة XSS وأنواعها

Reflected XSS

من أبسط الأنواع هو ناتج عن عدم فلترة دخل المستخدم لنرى هذا المثال:

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

Stored XSS

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

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

DOM-based XSS

هذا النوع يشبه reflected xss الى حد كبير لكنه يحدث بشكل كامل في جهة المستخدم حيث يقوم المخترق بحقن dom داخل الصفحة مثال يمكن إضافة form مع action يرسل الى موقع آخر .

الاخطار الناتجة عن XSS attack

سرقة الجلسة

يمكن استخدام هذا الهجوم لسرقة cookie الخاص بالجلسة وتسجيل الدخول باسمك و يتم ذلك عن طريق عمل إعادة توجيه الى موقع آخر يكون مجهز من قبل المخترق يستقبل ال cookie الخاصة بالموقع المصاب.

الاحتيال والتصيد

يمكن استخدام النوع الثالث للقيام بوضع form و إرسال المعلومات إلى موقع خاص بالمخترق وأنت تظن انها لوحة تسجيل الدخول الخاصة بالموقع الرسمي وعندها لن يحتاج المهاجم لسرقة الجلسة فقد حصل على كلمة السر بشكل مباشر منك

تشويه الموقع

يمكن استخدام أكواد javascript لتشويه الموقع بالنسبة للمستخدمين.

الحماية من XSS

في هذا القسم من المقال سوف نقدم لك (المستخدم العادي) بعض النصائح لتجنب الوقوع في مثل هذا الهجوم بالإضافة لبعض النصائح الخاصة لمطوري المواقع.

بالنسبة للمستخدم

عدم فتح أي رابط لا تعلم مصدره يمكنك استخدام إضافة noscript.

أو يمكنك الذهاب الى الاعدادات الخاصة بالمتصفح وتعطيل خيار استخدام javascript .

بالنسبة للمطور

كمطور ويب تقع عليك مسؤولية حماية المستخدم من المخاطر وليس فقط حماية الموقع

1- يجب التأكد من تطبيق فلاتر مناسبة على جميع حقول الإدخال الخاصة بالموقع

2- يفضل تفعيل httponly flag و إضافته لعدم السماح بقراء ال cookie عبر اكواد JavaScript

3- تفعيل secure flag لكي لا يتم ارسال ال cookie إلا عن طريق HTTPS

في النهاية

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

أسئلة شائعة

ما هي ثغرة XSS؟

هي ثغرة في مواقع الويب تنتج عن عدم فلترة مُدخلات المستخدم، تتيح للمهاجم حقن أكواد جافاسكربت خبيثة تُنفَّذ في متصفح الزائر الذي يثق بالموقع.

ما هي أنواع ثغرة XSS؟

لها ثلاثة أنواع: Reflected الذي يتطلب إرسال رابط للضحية، وStored الأخطر لأنه يُخزَّن في الموقع ويصيب كل الزوار، وDOM-based الذي يحدث بالكامل في جهة المستخدم.

كيف يحمي مطوّر الويب موقعه من XSS؟

بتطبيق فلاتر مناسبة على جميع حقول الإدخال، وتفعيل علم httponly لمنع قراءة الكوكيز عبر جافاسكربت، وتفعيل علم secure لإرسالها عبر HTTPS فقط.