المصطلحات

البرمجة النصية عبر المواقع (XSS)

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

ابدأ مشروعك

الأنواع الثلاثة

النوعكيف تصل الشيفرة
المخزَّنيحفظها الموقع، مثل تعليق أو ملف شخصي، ويعرضها لكل زائر يفتح تلك الصفحة
المنعكسترسل في رابط أو نموذج ثم تعاد مباشرة في الاستجابة
القائم على DOMتنشأ في المتصفح نفسه، حين تكتب شيفرة الصفحة بيانات غير موثوقة داخلها بطريقة غير آمنة

لماذا تهم

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

مثال

تخيل منتدى يعرض اسم كل عضو دون ترميز. يضع أحد الأعضاء اسمه مقطعا من الشيفرة. فيشغل كل زائر يفتح موضوعا شارك فيه ذلك العضو هذه الشيفرة. هذا المثال افتراضي.

كيف تمنعها

  • رمّز المخرجات بحسب سياقها. النص داخل HTML أو داخل خاصية أو داخل شيفرة أو داخل رابط يحتاج كل منها ترميزا مختلفا. وأطر العمل الحديثة مثل React تفعل ذلك تلقائيا.
  • تجنب أوامر إدراج HTML الخام، مثل innerHTML، فهي تتخطى هذه الحماية.
  • نظّف النص المنسق بمكتبة تنظيف جيدة الصيانة حين يجب أن يتمكن المستخدمون من نشر نص منسق.
  • أضف [سياسة أمان المحتوى](/glossary/content-security-policy) كطبقة ثانية تحد مما تستطيع الشيفرة المحقونة فعله.
  • اجعل ملفات تعريف الارتباط الخاصة بالجلسة HttpOnly حتى لا تقرأها الشيفرة مباشرة.

أخطاء شائعة

  • حذف كلمة script من المدخلات. للمهاجمين طرق كثيرة أخرى لتشغيل الشيفرة.
  • الترميز بحسب سياق خاطئ، كترميز HTML داخل كتلة شيفرة.
  • الوثوق ببيانات قادمة من قاعدة بياناتك أو واجهة داخلية. فالثغرة المخزنة تبدأ من هنا بالضبط.
  • الاكتفاء بسياسة أمان المحتوى وحدها.

مصطلحات ذات صلة

حقن SQL هو قريبها في جهة الخادم. ومراجعة الشيفرة الآمنة جيدة في كشف معالجة المخرجات غير الآمنة.

تابع الاستكشاف

هل أنت مستعد لبناء منتج آمن؟

حدّثنا عن منتجك، وسنرد بخطة واضحة.

ابدأ مشروعك

نود استخدام Microsoft Clarity لفهم كيف يستخدم الزوار الموقع حتى نحسّنه. يضع ملفات ارتباط ويبقى متوقفًا ما لم توافق. سياسة ملفات الارتباط