سؤال

وأستخدمه لتنقية HTML لحماية طلبي من هجمات XSS. حاليا أنا تنقية المحتوى من محرري WYSIWYG لأن هذا هو المكان الوحيد الذي يسمح للمستخدمين لاستخدام XHTML العلامات.

وسؤالي هو، وأود أن استخدام HTML تنقية أيضا على اسم المستخدم وكلمة المرور في نظام مصادقة تسجيل الدخول (أو على حقول الإدخال من الاشتراك الصفحة مثل البريد الإلكتروني والاسم والعنوان وما إلى ذلك)؟ هل هناك فرصة للهجوم XSS هناك؟

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

المحلول

يجب تنقية أي شيء في أي وقت وربما يتم عرضها على الصفحة. لأنه مع هجمات XSS، وضعت المتسللين في العلامات <script> أو العلامات الخبيثة الأخرى التي يمكن أن تصل إلى مواقع أخرى.

يجب

وكلمات السر والبريد الإلكتروني سيكون على ما يرام. لا ينبغي أبدا أن تظهر كلمات السر والبريد الإلكتروني يجب أن يكون مدقق الخاصة بهم للتأكد من أنهم في شكل مناسب.

وأخيرا، تذكر دائما أن تضع في htmlentities () على المحتوى.

وأوه .. وإلقاء نظرة على filter_var aswell. طريقة لطيفة جدا من المتغيرات التصفية.

نصائح أخرى

توجد

والمخاطر XSS أي وقت مضى حيث البيانات المدخلة من قبل المستخدم واحد <م> قد ينظر إليها من قبل مستخدمين آخرين. حتى لو هذه البيانات غير قابل للعرض حاليا، لا تفترض أن هناك حاجة للقيام بذلك لن تنشأ.

وبقدر ما اسم المستخدم وكلمة المرور تذهب، ويجب أن لا تعرض على كلمة السر، أو حتى تخزينه في شكل يمكن عرضها (أي encyrpt مع sha1()). للأسماء، لديها قيود على الشخصيات القانونية مثل [A-Za-z0-9_]. وأخيرا، كما تقترح إجابة أخرى، استخدام مساعيكم اللغات أتش تي أم أل وظيفة الترميز كيان لأي إدخال البيانات التي قد تحتوي على المحجوزة أو الأحرف أتش تي أم أل الخاصة، والذي يمنع هذه البيانات من تسبب أخطاء في بناء الجملة عند عرضها.

لا، أنا لن تستخدم HTMLPurifier على اسم المستخدم وكلمة المرور أثناء المصادقة تسجيل الدخول. في appllications بلدي يمكنني استخدام أسماء وأرقام وعامل تصفية التحقق من صحة المدخلات وعرضها مع htmlspecialchars مع ENT_QUOTES. هذا هو فعالة جدا والكثير الجحيم أسرع من HTMLpurifier. أنا لم أر هجوم XSS باستخدام سلسلة أبجدية رقمية. وراجع للشغل HTMLPurifier غير مجدية عند تصفية المحتوى أبجدية على أي حال حتى إذا قمت فرض سلسلة الإدخال من خلال فلتر أبجدية ثم لا يوجد أي نقطة لعرضه مع HTMLpurifier. عندما يتعلق الأمر كلمات السر لا ينبغي أبدا أن يظهر إلى أي شخص في المكان الأول الذي يلغي إمكانية XSS. وإذا كان لسبب معاكس تريد عرض كلمات السر ثم يجب أن تصميم التطبيق الخاص بك في مثل هذه الطريقة أنه يسمح فقط صاحب كلمة السر ليكون قادرا على رؤية، وإلا ما كنت أبله وقتا كبيرا وXSS هي الأقل القلق الخاص بك!

تنقية

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

وأسماء المستخدمين وكلمات السر من ناحية أخرى ليست <م> HTML . انهم <م> نص عادي ، وذلك لتنقية HTML ليست خيارا. محاولة استخدام تنقية HTML هنا إما أن تفسد البيانات، أو تسمح بشن هجمات XSS.

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

" onclick="javascript:alert()" href="

وأو إذا حاول شخص ما في استخدام الرموز الخاصة في كلمة المرور الخاصة بهم، ودخل:

<password

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

وبدلا من ذلك، يجب أن ترميز النص. الترميز المطلوب يعتمد على السياق، ولكن يمكنك استخدام htmlentities عند إخراج هذه القيم إذا كنت عصا إلى القاعدة # 0 و <قوية> القاعدة # 1 ، أو في في OWASP XSS منع الغش ورقة

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