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

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

كيف تعمل البرمجة النصية عبر المواقع؟

قبل فهم كيفية عمل البرمجة النصية عبر المواقع ، من المهم معرفة ما تعنيه سياسة نفس الأصل (SOP). SOP هي سياسة آلية أمنية تقيد موقع الويب (أصل واحد) من القراءة أو الكتابة إلى موقع ويب آخر (أصل مختلف). يمنع مواقع الويب الضارة من إرسال تعليمات برمجية ضارة إلى مواقع الويب الموثوقة.

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

instagram viewer

هناك ثلاثة أنواع من البرمجة النصية عبر المواقع التي يستخدمها المتسللون لكسر مواقع الويب: ينعكس ، مخزن ، و DOM XSS.

كيفية منع البرمجة النصية عبر المواقع في العقدة

فيما يلي بعض الخطوات التي يمكنك اتخاذها لمنع البرمجة النصية عبر المواقع في Node.

تعقيم المدخلات

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

على سبيل المثال ، يمكنك استخدام ملحق المدقق للهروب من علامات HTML في إدخال المستخدم كما هو موضح أدناه.

يستورد المدقق من "المدقق" ؛
السماح userInput = `جين <البرنامج النصي onload ="إنذار('XSS هاك');"></script>`;
يترك sanitizedInput = validator.escape (إدخال المستخدم) ؛

إذا كنت ستقوم بتشغيل الكود أعلاه ، فسيكون الإخراج المطهر هو هذا.

جين &لتر البرنامج النصي onload =&مثل ؛ إنذار(&# x27 ؛ اختراق XSS&# x27 ؛) ؛&مثل ؛&GT.&لتر&# x2F ؛ النصي&GT.

تقييد إدخال المستخدم

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

تنفيذ سياسة ملفات تعريف الارتباط HTTP فقط

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

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

فيما يلي مثال على كيفية تنفيذ سياسة ملفات تعريف الارتباط HTTP فقط في Node.js باستخدام Express:

تطبيق.استعمال(التعبير.جلسة({
سر: "سر",
بسكويت: {
http فقط: حقيقي,
يؤمن: حقيقي
}
}))

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

تعد البرمجة النصية عبر المواقع هدفًا سهلًا للقراصنة

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