12

هل يكفي فلترة المدخلات في PHP للحماية من ثغرة XSS

انا مبتدئ في PHP وأستخدم بضع دوال لفلترة المدخلات من أكواد HTML والباك سلاش وغيرها, والسؤال: هل يكفي هذا للحماية من ثغرة XSS ؟


ثغرة الـxss سببها أن المبرمج نسي أن يحول escape رموز الـhtml مثل < إلى &lt; عند العرض (لاحظ أن المشكلة تظهر عند العرض وليس عند الإدخال). حلها فقط أن تعمل escape عند عرض النصوص، استخدم htmlspecialchars في php، مثلاً http://codepad.org/8B5AGOVo. هذا حلها الفلترة والحذف ليست حلول.

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