هل تكفي دالة strip_tags من حماية المدخلات ؟
مثل مدخلات البحث و اليوزر و الإيمايلات ؟
الدالة strip_tags ليست كافية وحدها للحماية من ثغرة XSS، فيمكن تخطيها بسهولة كما شرح لك الأخ @billal-em.
من الأفضل انك تستعمل الدالة htmlentities.
وهناك أيضا شيء سيء جدا في الدالة strip_tags وهي انها تقوم مباشرة بحذف وسوم html التي توضع بين < و >، على عكس الدالة htmlentities التي تقوم بتحويلهم إلى نصوص غير قابلة للتنفيذ (Entities).
echo htmlentities ("<script>", ENT_QUOTES, "UTF-8");
يعتمد على كيف ستعرض تلك المعلومة بعد إستقبالها لنقل أنك تعتمد stip_tags فقط وكنت تعرض إسم المستخدم في alt attribute لصورة مثلا
<img src="image.png" alt="username">
عندها سأختار username كالتالي
" onclick=alert(1) x="
وبعد أن تعرض تلك المعلومة في alt attribute سيكون الناتج كالتالي :
<img src="image.png" alt="" onclick=alert(1) x="">
إستعمل htmlspecialchars تغنيك عن إستعمال دالة أخرى في حماية المدخلات
لا توجد دالة تكون الأفضل في جميع الحالات
الأفضل هو فلترة المدخلات على حسب طبيعة كل مدخل على حده، بمعنى تحديد ماهية شكل المدخلات وإزالة ما دونه على سبيل المثال:
1- بريد إلكتروني، يتم التحقق من كونه بريد إلكتروني صالح.
2- رقم هاتف، يتم التحقق من كونه رقم هاتف صالح.
3- كلمة مرور، يتم التحقق من كونها كلمة مرور صالحة.
...
وهكذا
التعليقات