تُمكّن هجمات XSS المهاجمين من حقن نصوص برمجية من جانب العميل في صفحات الويب التي يتم عرضها من قبل مستخدمين آخرين. تتمثل الآثار الرئيسية لهذه الثغرة في إمكانية تنفيذ أي إجراءات في سياق المستخدم الذي قام بتسجيل الدخول، وقراءة أي بيانات في سياق المستخدم الذي قام بتسجيل الدخول.
سيناريو الهجوم
يقوم المهاجم بتحديد موقع ثغرة XSS على موقع إلكتروني تستخدمه الضحية، على سبيل المثال، موقع أحد البنوك
تم تسجيل دخول الضحية حالياً إلى هذه الصفحة
يرسل المهاجم إلى الضحية عنوان URL مصمم خصيصاً له
تنقر الضحية على عنوان URL
على الضحية البنك الموقع الإلكتروني, JavaScriptالكود يبدأ التنفيذ لاعتراض بيانات المستخدم أو تنفيذ عملية تحويل بالنيابة عنه إلى حساب المهاجم
تجدر الإشارة إلى أن العمليات التي يتم إجراؤها نيابةً عن الضحية قد تكون غير مرئية للضحية، حيث قد تتم في الخلفية باستخدام واجهة برمجة التطبيقات الخاصة بالبنك، أو قد يقوم المهاجم بتنفيذها لاحقًا بالبيانات اللازمة للمصادقة والرموز وملفات تعريف الارتباط وما إلى ذلك.
أنواع XSS
1. انعكاس XSS
هذا واحد حيث يتم عرض كود HTML/JavaScript الموجود في أي معلمة (مثل GET أو POST أو ملف تعريف الارتباط) في الاستجابة.
صفحة تحتوي على مدخل نصي للبحث عن شيء ما يضع المعلمة بحث = فو في نهاية عنوان URL عند الاستعلام عن واجهة برمجة التطبيقات. بعد إدخال أي عبارة، إذا لم يتم العثور عليها، يتم وضع رسالة إرجاع في HTML ex.
<div>لم يتم العثور على نتيجة <b>فو</b></div>
يمكننا محاولة وضع عنوان URL بحث=..
2.DOM XSS
هذا عندما يتم تمكين تنفيذها باستخدام وظائف خطيرة في JavaScript، مثل ''إيفال'' أو 'داخلي هتل'. يُظهر "المثال الحي" أدناه هجوم DOM XSS يستند إلى 'داخلي هتل' الوظيفة.
3. XSS المخزنة
هذا واحد حيث تتم كتابة التعليمات البرمجية الخبيثة على جانب الخادم. على سبيل المثال، قد نرسل تعليقًا يحتوي على كود خبيث إلى منشور مدونة يتم تحميله على الخادم. تتمثل مهمتها، على سبيل المثال، في انتظار إشراف المسؤول ثم سرقة بيانات جلسته وما إلى ذلك.
طرق الحقن
1. في محتوى العلامة
'على خطأ=تنبيه('XSS')''في
<img src onerror="alert('XSS')" />
2. في محتوى السمة
"" onmouseover=تنبيه('XSS') في
<div class="" onmouseover="alert('XSS')""></div>
في محتوى السمة بدون علامات الاقتباس
x onclick=تنبيه('XSS')في
<div class="x" onclick="alert('XSS')"></div>
في التكريمسمة ef
جافا سكريبت:تنبيه('XSS') في
<a href="javascript:alert('XSS')"></a>
في السلسلة داخل كود JavaScript
"؛تنبيه('XSS')// في
دع اسم المستخدم=""؛ تنبيه('XSS')"؛
في السمة مع حدث JavaScript
')؛)؛تنبيه('XSS')// حيث ' عبارة عن اقتباس واحد، إلى
ترميز البيانات باستخدام الدوال المدمجة الموجودة في العديد من لغات البرمجة.
استخدام أنظمة القوالب ذات الترميز التلقائي. معظم الأُطر الشائعة التي تستخدم مثل هذه الأنظمة تحمينا من حقن XSS (Django، قوالب Vue، React وغيرها).
لا تستخدم دوال مثل التقييم أو الوظيفة ببيانات مستخدم غير موثوق بها.
لا تستخدم الدوال والخصائص التي تعيّن شيفرة HTML مباشرةً إلى عناصر شجرة DOM، مثلًا, داخليHTML, outerHTML, إدراجAdjacentHTML, ocument.write. بدلًا من ذلك، يمكنك استخدام الدوال التي تعين النص مباشرةً إلى هذه العناصر، مثل محتوى النص أو النص الداخلي.
توخَّ الحذر عند إعادة توجيه المستخدم إلى عنوان URL خاضع لسيطرته. خطر الحقن الموقع = 'جافا سكريبت('XSS')''.
تصفية HTML باستخدام مكتبات مثل DOMPurify.
كن حذراً بشأن التحميل .html أو .svg الملفات. يمكنك إنشاء مجال منفصل يتم من خلاله عرض الملفات التي تم تحميلها.
استخدم سياسة أمان المحتوى-الأمن-المحتوى الآلية.
ألق نظرة على فلاتر مكافحة XSS المدمجة في معظم المتصفحات الشائعة.
إذا وجدت هذه المقالة مثيرة للاهتمام، تابع لوكاش على Github: https://github.com/twistezo