كيف يمكن استخدام fckEditor بأمان، دون التعرض لخطر البرمجة النصية عبر المواقع؟

StackOverflow https://stackoverflow.com/questions/65734

  •  09-06-2019
  •  | 
  •  

سؤال

يصف هذا الرابط استغلالًا في تطبيقي باستخدام fckEditor:http://knitinr.blogspot.com/2008/07/script-exploit-via-fckeditor.html

كيف أجعل تطبيقي آمنًا أثناء استخدام fckEditor؟هل هو تكوين fckEditor؟هل من المفترض أن أقوم ببعض المعالجة من جانب الخادم بعد أن أحصل على النص من fckEditor؟

إنه لغز لأن fckEditor الاستخدامات علامات html لتنسيقها، لذا لا يمكنني تشفير HTML فقط عندما أعرض النص مرة أخرى.

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

المحلول

تطهير جانب خادم HTML، لا يوجد خيار آخر.بالنسبة لـ PHP سيكون كذلك تنقية HTML, بالنسبة لـ .NET لا أعرف.من الصعب تنقية HTML - لا يكفي إزالة علامات البرنامج النصي، بل يتعين عليك أيضًا الحذر من معالجات الأحداث on* وأكثر من ذلك، وذلك بفضل غباء IE على سبيل المثال.

أيضًا باستخدام html وcss المخصصين، من السهل الاستيلاء على مظهر موقعك وتخطيطه - باستخدام التراكب (الموضع تمامًا) الذي يغطي كل الشاشات وما إلى ذلك.كن مستعدا لذلك.

نصائح أخرى

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

يستخدم بعض الأشخاص ترميز HTML للقيام بذلك، ولكن هذا سيؤدي إلى تدمير كل التنسيقات التي قام بها FCKeditor، وليس ما تريده.


ربما يمكنك استخدام مكتبة البرمجة النصية لمواقع Microsoft المضادة للتقاطع.عينات على MSDN

هل من المفترض أن أقوم ببعض المعالجة من جانب الخادم بعد أن أحصل على النص من fckEditor؟

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

على سبيل المثال، إذا دخل المستخدم <b><script>evil here</script></b>, ، سوف يترجم الكود الخاص بك إلى <b>&lt;script&gt;evil here&lt;/script&gt;</b> قبل تقديم الصفحة.

و لا استخدم التعبيرات العادية لحل هذه المشكلة، فهذه مجرد دعوة لشخص ذكي لكسرها مرة أخرى.

يمكن تكوين FCKEditor لاستخدام عدد قليل من العلامات فقط.ستحتاج إلى تشفير كل شيء باستثناء تلك العلامات القليلة.

تلك العلامات هي:<strong> <em> <u> <ol> <ul> <li> <p> <blockquote> <font> <span>.

يجب أن تحتوي علامة الخط فقط على سمات الوجه والحجم.يجب أن تحتوي علامة الامتداد على سمة فئة فقط.

لا ينبغي السماح بأي سمات أخرى لهذه العلامات.

أنا أفهم لا.أنا أفتقر إلى DO.

هل يعد استخدام FCKEditor أمرًا ضروريًا، أم يمكنك استخدام محرر/لغة ترميزية مختلفة؟أنصح باستخدام Markdown وWMD Editor، وهي نفس اللغة التي يستخدمها StackOverflow.يجب أن يكون لدى مكتبة Markdown لـ .NET خيار للهروب من كافة علامات HTML - تأكد من تشغيله.

XSS أمر صعب.أقترح بعض القراءة:

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

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

أتعامل مع جميع بيانات المستخدم على أنها ملوثة؛واستخدم Markdown لتحويل النص إلى HTML.يقوم بتطهير أي HTML موجود في النص، مما يقلل من الخبث.

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