سؤال

لقد واجهت للتو سؤالاً مع إجابة تقترح مكتبة AntiXss لتجنب البرمجة النصية عبر المواقع.بدت مثيرة للاهتمام، وقراءة مدونة ام اس دي ان, ، يبدو أنه يوفر طريقة HtmlEncode() فقط.لكنني أستخدم بالفعل HttpUtility.HtmlEncode().

لماذا أرغب في استخدام AntiXss.HtmlEncode عبر HttpUtility.HtmlEncode؟

والحقيقة أنني لست أول من طرح هذا السؤال.وبالفعل ظهر جوجل بعض إجابات, ، خاصة

  • نهج القائمة البيضاء بدلاً من القائمة السوداء
  • تحسين الأداء بمقدار 0.1 مللي ثانية

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

هل هناك أمثلة على الحالات التي قد يمنع فيها تطبيق AntiXss هجومًا لا يمنعه تطبيق HttpUtility؟

إذا واصلت استخدام تطبيق HttpUtility، فهل أنا في خطر؟ماذا عن هذا "الخلل"?

هل كانت مفيدة؟

المحلول

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

تحدد إرشادات OWASP استخدام نهج القائمة البيضاء.تحدد إرشادات الامتثال لـ PCI هذا أيضًا في معايير الترميز (نظرًا لأنها تشير إلى إرشادات OWASP).

كما أن الإصدار الأحدث من مكتبة AntiXss لديه وظيفة جديدة رائعة:.GetSafeHtmlFragment() وهو أمر رائع لتلك الحالات التي تريد فيها تخزين HTML في قاعدة البيانات وعرضها للمستخدم بتنسيق HTML.

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

تحرير - أضيفت

كما هو موضح في السؤال، مثال على المكان الذي سيحميك فيه برنامج anti xss ولن يقوم HttpUtility بحمايتك:

HttpUtility.HtmlEncode والخادم.لا يمنع HtmlEncode البرمجة النصية عبر المواقع

لكن هذا بحسب المؤلف.لم أختبره شخصيا.


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

في الوقت الحالي، قد ينجح HttpUtility.HtmlEncode في حظر كل هجوم، وذلك ببساطة عن طريق الإزالة/الترميز < و > ، بالإضافة إلى عدد قليل من الشخصيات الأخرى "المعروفة التي يحتمل أن تكون غير آمنة"، ولكن يحاول شخص ما دائمًا التفكير في طرق جديدة للاقتحام.يعد السماح فقط بالمحتوى المعروف الآمن (القائمة البيضاء) أسهل كثيرًا من محاولة التفكير في كل جزء من المدخلات غير الآمنة التي قد يرميها المهاجم إليك (نهج القائمة السوداء).

نصائح أخرى

فيما يتعلق بسبب استخدام أحدهما على الآخر، ضع في اعتبارك أن مكتبة AntiXSS يتم إصدارها في كثير من الأحيان أكثر من إطار عمل ASP.NET - لأنه، كما يقول ديفيد ستراتون "يحاول شخص ما دائمًا التفكير في طرق جديدة للاقتحام"، عندما يأتي شخص ما بأحد هذه البرامج، فمن المرجح أن تحصل مكتبة AntiXSS على إصدار محدث للدفاع ضدها.

وفيما يلي الاختلافات بين Microsoft.Security.Application.AntiXss.HtmlEncode و System.Web.HttpUtility.HtmlEncode طُرق:

  1. يستخدم Anti-XSS تقنية القائمة البيضاء، والتي يشار إليها أحيانًا بمبدأ التضمين، لتوفير الحماية ضد هجمات البرمجة النصية عبر المواقع (XSS).يعمل هذا الأسلوب أولاً عن طريق تحديد مجموعة صالحة أو مسموح بها من الأحرف، وترميز أي شيء خارج هذه المجموعة (أحرف غير صالحة أو هجمات محتملة). System.Web.HttpUtility.HtmlEncode وطرق التشفير الأخرى في مساحة الاسم هذه تستخدم مبدأ الاستثناءات وترميز فقط أحرف معينة تم تصنيفها على أنها قد تكون خطرة مثل الأحرف <، >، & و'.

  2. تدعم قائمة الأحرف البيضاء (أو الآمنة) الموجودة في مكتبة مكافحة XSS أكثر من اثنتي عشرة لغة (اليونانية والقبطية والسيريلية والملحق السيريلية والأرمنية والعبرية والعربية والسريانية والملحق العربي وثانا وNKo والمزيد)

  3. تم تصميم مكتبة Anti-XSS خصيصًا للتخفيف من هجمات XSS HttpUtility يتم إنشاء أساليب التشفير للتأكد من أن إخراج ASP.NET لا يكسر HTML.

  4. الأداء - متوسط ​​الدلتا بين AntiXss.HtmlEncode() و HttpUtility.HtmlEncode() هو +0.1 مللي ثانية لكل معاملة.

  5. يوفر الإصدار 3.0 من Anti-XSS أداة اختبار تسمح للمطورين بإجراء اختبارات التحقق من صحة XSS والأداء.

تعتمد معظم ثغرات XSS (أي نوع من الثغرات الأمنية في الواقع) بشكل كامل على حقيقة أن الأمان الحالي لم "يتوقع" حدوث أشياء معينة.تعد أساليب القائمة البيضاء فقط أكثر ملاءمة للتعامل مع هذه السيناريوهات بشكل افتراضي.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top