(الدالة(w,d,s,l,i) {w[l]=w[l]||[l]؛ w[l].push({'gtm.start': Date().getTime()، الحدث:'gtm.js'})؛ var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'؟'&l='+l:''؛ j.async=true;j.src='j.src 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); }))) (نافذة، مستند،'البرنامج النصي'،'dataLayer'،'GTM-5LHNRP9'); thecodest، المؤلف في The Codest - صفحة 10 من 13

سيناريو الهجوم

  1. يقوم المهاجم بتحديد موقع ثغرة XSS على موقع إلكتروني تستخدمه الضحية، على سبيل المثال، موقع أحد البنوك
  2. تم تسجيل دخول الضحية حالياً إلى هذه الصفحة
  3. يرسل المهاجم إلى الضحية عنوان URL مصمم خصيصاً له
  4. تنقر الضحية على عنوان URL
  5. على الضحية البنك الموقع الإلكتروني, 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>

  1. في محتوى السمة بدون علامات الاقتباس

x onclick=تنبيه('XSS')في

<div class="x" onclick="alert('XSS')"></div>

  1. في التكريمسمة ef

جافا سكريبت:تنبيه('XSS') في

<a href="javascript:alert('XSS')"></a>

  1. في السلسلة داخل كود JavaScript

"؛تنبيه('XSS')// في

دع اسم المستخدم=""؛ تنبيه('XSS')"؛
  1. في السمة مع حدث JavaScript

')؛)؛تنبيه('XSS')// حيث &#39 عبارة عن اقتباس واحد، إلى

<div onclick="change('&#39;);alert('XSS')//')">جون</div>

  1. في التكريم سمة داخل بروتوكول JavaScript

)؛تنبيه(1)// حيث %27 عبارة عن اقتباس واحد، إلى

<a href="javascript:change('%27);alert(1)//')">انقر فوق</a>


مثال حي

أساليب الدفاع

  1. ترميز البيانات باستخدام الدوال المدمجة الموجودة في العديد من لغات البرمجة.
  2. استخدام أنظمة القوالب ذات الترميز التلقائي. معظم الأطر الشائعة التي تستخدم مثل هذه الأنظمة تحمي لنا من حقن XSS (جانغو، القوالب, Vue, React إلخ).
  3. لا تستخدم دوال مثل التقييم أو الوظيفة ببيانات مستخدم غير موثوق بها.
  4. لا تستخدم الدوال والخصائص التي تعيّن شيفرة HTML مباشرةً إلى عناصر شجرة DOM، مثلًا, داخليHTML, outerHTML, إدراجAdjacentHTML, ocument.write. بدلًا من ذلك، يمكنك استخدام الدوال التي تعين النص مباشرةً إلى هذه العناصر، مثل محتوى النص أو النص الداخلي.
  5. توخَّ الحذر عند إعادة توجيه المستخدم إلى عنوان URL خاضع لسيطرته. خطر الحقن الموقع = 'جافا سكريبت('XSS')''.
  6. تصفية HTML باستخدام مكتبات مثل DOMPurify.
  7. كن حذراً بشأن التحميل .html أو .svg الملفات. يمكنك إنشاء مجال منفصل يتم من خلاله عرض الملفات التي تم تحميلها.
  8. استخدم سياسة أمان المحتوى-الأمن-المحتوى الآلية.
  9. ألق نظرة على فلاتر مكافحة XSS المدمجة في معظم المتصفحات الشائعة.

    إذا وجدت هذه المقالة مثيرة للاهتمام، تابع لوكاش على Github: https://github.com/twistezo

اقرأ المزيد:

استراتيجيات جلب البيانات في NextJS

واجهة برمجة تطبيقات القضبان و CORS. اندفاعة من الوعي

لماذا يجب عليك (على الأرجح) استخدام Typescript؟

arArabic