سؤال

أحاول إيجاد طرق لتعقيم مدخلات WMD محرر.

على وجه التحديد ، أحاول إتاحة علامات HTML فقط في <code>العلامات التي يولدها WMD. هل هذا ممكن

مشكلتي هي أن الكود التالي يتم تقديمه على أنه HTML وهو أمر لا يطاق للإمكانات هجمات XSS.

فمثلا، <a onmouseover="alert(1)" href="#">read this!</a>

يقوم الرمز أعلاه بإعداد عادة في وضع المعاينة وعند حفظه في قاعدة البيانات.

لقد لاحظت أن Overflow لا يبدو أن لديه هذه المشكلة. يتم تقديم نفس الرمز فقط كنص.

لاحظت أن فريق Overflow قد شارك رمزه في http://refactormycode.com/codes/333-sanitize-html. هل يجب علي حقًا استخدام C# من أجل تعقيم WMD للقيام بذلك؟

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

المحلول

انتهى بي الأمر باستخدام HTML تنقية لهذا.

نصائح أخرى

إذا كنت ترغب في منع البرامج النصية السيئة من WMD على جانب العميل ، ألق نظرة على إجابتي هنا:قم بمحاذاة معاينة محرر WMD HTML مع التحقق من صحة HTML من جانب الخادم (مثل رمز JavaScript المدمج).

إنه يوضح كيفية تنفيذ القائمة البيضاء من جانب العميل في محرر WMD لتقييد جزء معاينة WMD HTML لعناصر HTML المعروفة وسمات HTML المعروفة. يفعل التحقق من الصحة بعد، بعدما تقوم WMD Geneates بـ HTML ، لذلك حتى لو كان هناك خطأ في جيل HTML لمحرر WMD والذي يسمح للسيناريو السيئ بالمرور ، فإن مانع القائمة البيضاء سيحصل عليه. يعتمد هذا الرمز على تطبيق StackOverFlow.com لنفس التحقق من الصحة.

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

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

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