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

هل تكفي دالة 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="">

يفضل ان تستخدم html_entities ايضا

إستعمل htmlspecialchars تغنيك عن إستعمال دالة أخرى في حماية المدخلات

لا توجد دالة تكون الأفضل في جميع الحالات

الأفضل هو فلترة المدخلات على حسب طبيعة كل مدخل على حده، بمعنى تحديد ماهية شكل المدخلات وإزالة ما دونه على سبيل المثال:

1- بريد إلكتروني، يتم التحقق من كونه بريد إلكتروني صالح.

2- رقم هاتف، يتم التحقق من كونه رقم هاتف صالح.

3- كلمة مرور، يتم التحقق من كونها كلمة مرور صالحة.

...

وهكذا

  • طبعاً سيتم هذا عبر التعابير القياسية Regular Expression.