ماهي ثغرات XSS ؟
ثغرات الـ xss هي اختصارلـ" Cross Site Scripting " وسبب تسميتها xss بدلا من css لكي لا تختلط مع لغة css للانماط القياسية التي تستخدم مع الــ HTML لاعطاء جمالية وتاثيرات والوان الموقع.
اذاً الــ XSS هي ثغرات أمنية منتشرة بكثرة في تطبيقات الويب وخطيرة جداَ.
حيث من خلال هذه الثغرات يقوم شخص "المهاجم" او الهاكر بحقن كود خبيث عادة ما يكون بلغة جافاسكرببت JavaScript او HTML التي يقوم المتصفح بتنفيد اوامر الكود , ومثال على ذلك :
حقن كود جافا سكربت لاظهار رسالة عند الظغط على تنفيذ او Enter في المتغير المصاب بالثغرة وليكن اسم المتغير txt :
<http://www.domain.com/index.php?txt=<script>alert('webpage hacked - xss');</scriptوهذا ابسط مثال على هذه الثغرة فقط لتصل الفكرة اليكم انشاؤالله.
انواعها :
- ثغرات XSS ثابته - مخزّنه | Persistent - stored
- ثغرات XSS غير ثابته - غير مخزّنه | Non persistent - Reflected
ثغرات XSS الثابته:
هي اخطر من النوع الغير ثابت , وذلك لان ثغرات"XSS" الثابته , مايدخله الهاكر ثابت بالصفحه , اي مايدخله مثلاً يخزّن بقاعدة بيانات الموقع حيث عند دخول موضوع يحتوي على امكانية التفاعل بالردود او فيه مدخلات و لم يكون الموقع محمي بالتأكيد سيمكنه من حقن اكواده بسهولة تامة وعند تنفيذ اكواده بعدها اي شخص يقوم بالدخول الى الموضوع المحقون بكود الثغرة سيشاهد اعمال المخترق في الصفحة .
ثغرات XSS الغير ثابته:
هي النوع الاكثر انتشاراً وليس "خطورة " وهي التي تقوم على اساس الادخال الخاص "وللمعلوميه " ثغرات " XSS" الثابته البعض يُطلق عليها " HTML Injection " لكي يوضّح انها ثغرة" XSS " مُخزّنه وخطيرة ولكن التسمية ليست صحيحه فعلياً لكي تخصص لنوع معيّن وذلك لان النوعين تقوم على اساس حقن الاكواد لكن الثابته تكون مخزنة بقاعدة البيانات كما ذكرنا في الاعلى والغير ثابته هي غير مخزنة في قاعدة البيانات وبذلك اي شخص يدخل مثلا زائر للموقع لا يشاهد ماعمله المخترق لانها لم تخزن الاكواد الخبيثة في الموقع في قاعدة بياناته.
خطورة الثغرة كبيرة جداً في النوع الثابت , وذلك لانه يمكن للمخترق اولاً اختراق متصفحي الموقع "وهذا يعني القدرة على اختراق مُدير الموقع وبذلك اختراق web server " و كذلك تشويه index او الصفحة الرئيسية للموقع, او حتى تغييره بشكل كامل واخيراً سرقة cokiees الخاص به.
كيف احمي موقعي منها؟
- قم بفحص المدخلات في البرنامج، وذلك بتطهير المدخلات من اي كود خبيث او محاولة لحقن كود في المدخلات. إذا كان نوع المدخلات أرقاما فقط فلا تقم بالسماح للحروف بالمرور عبر البرنامج. إستخدم القوائم البيضاء في ذلك اي انه يتم مقارنة المدخلات بقائمة المدخلات المسموحة فقط ويتم رفض المدخلات التي لا تكون في تلك القائمة.
- تأكد بأن ترميز الحروف في الصفحة هو الذي يتطلبه برنامج (Character Encoding). في حالة الترميز صحيح سيتعرف المتصفح ما اذا كانت الحروف التي يتم عرضها يرمز اليها بشكل معين او لا. أي انك لن تدع للمصفح الإختيار اذ انه في بعض الحالات يتم إسغلال هذه الخاصية في المتصفحات لمهاجمة ثغرات XSS او تخطي الحماية المتعلقة بها.
- قم بفحص برنامجك والكشف عن ثغرات الـ XSS بإستخدام برامج متخصصه في ذلك مثل برنامج المشروع المشهور OWASP المسمى بـ OWASP Zap (مفتوح المصدر ومجاني أيضا)
- قم دائما بتفعيل خيار الـ HTTPOnly عندما تسجل حالة البرنامج من خلال الـ Cookies. هذا سينبه المتصفح لكي لايسمح لكود السكربت بقراءة الـCookies وبالتالي منع سرقتها او استغلالها لتقنص شخصية ثانية.
- يوجد خاصية في بروتوكول HTTP تسمى قانون المحتوى الأمني CSP والذي يقوم بتخصيص اي من الجزاء المسموح فيها لمتصفح ان يقوم بتنفيذ اوامر كود السكربت في الصفحة.
اتمنى اني قد وضحت اهم واخطر الثغرات زان الشرح كان سهل ومفهوم .. القاكم في دروس قادمة باذن الله تعالي الى اللقاء.
ليست هناك تعليقات:
إرسال تعليق