مرجع فیلتر (PHP Filter)
اینجا درباره «فیلتر PHP» حرف می زنیم. «فیلتر (Filter)» یعنی بررسی و تمیزکاری ورودی های ناامن، مثل داده های فرم. این کار جلوی خطا و حمله را می گیرد. شبیه نگهبان مدرسه که کارت ها را چک می کند.
معرفی فیلتر در PHP
فیلترها داده ها را «اعتبارسنجی (Validate)» و «پاک سازی (Sanitize)» می کنند. مثلا ایمیل درست است یا نه. سپس، کاراکترهای خطرناک را حذف می کنند.
نصب و فعال سازی
از PHP 5.2.0 فیلترها به صورت پیش فرض فعال هستند. بنابراین، نصب لازم نیست.
پیکربندی در php.ini
filter.default: نام فیلتر پیش فرض برای ورودی ها. مقدار پیش فرض "unsafe_raw" است.
filter.default_flags: پرچم های پیش فرض هنگام استفاده از فیلتر پیش فرض. مقدار پیش فرض NULL است.
توابع مهم فیلتر
- filter_has_var(): وجود متغیر در ورودی را چک می کند.
- filter_id(): شناسه یک فیلتر را برمی گرداند.
- filter_input(): یک متغیر بیرونی را می گیرد و فیلتر می کند.
- filter_input_array(): چند ورودی را باهم می گیرد و فیلتر می کند.
- filter_list(): لیست نام همه فیلترها.
- filter_var(): یک متغیر را با فیلتر مشخص پاک سازی یا اعتبارسنجی می کند.
- filter_var_array(): چند متغیر را باهم فیلتر می کند.
ثابت های از پیش تعریف شده
ورودی ها: INPUT_GET، INPUT_POST، INPUT_COOKIE، INPUT_ENV، INPUT_SERVER.
فیلتر پیش فرض: FILTER_DEFAULT معادل FILTER_UNSAFE_RAW است.
مهم ترین فیلترهای اعتبارسنجی
- FILTER_VALIDATE_BOOLEAN: بررسی بولین.
- FILTER_VALIDATE_EMAIL: بررسی ایمیل.
- FILTER_VALIDATE_INT: بررسی عدد صحیح.
- FILTER_VALIDATE_FLOAT: بررسی عدد اعشاری.
- FILTER_VALIDATE_IP: بررسی IP.
- FILTER_VALIDATE_URL: بررسی URL.
مهم ترین فیلترهای پاک سازی
- FILTER_SANITIZE_EMAIL: حذف کاراکترهای غیرمجاز ایمیل.
- FILTER_SANITIZE_ENCODED: حذف/کدگذاری کاراکترهای خاص.
- FILTER_SANITIZE_NUMBER_INT: فقط اعداد و علامت ها بمانند.
- FILTER_SANITIZE_NUMBER_FLOAT: اجازه نقطه و e/E.
- FILTER_SANITIZE_SPECIAL_CHARS: حذف کاراکترهای خاص.
پرچم های رایج (Flags)
FILTER_FLAG_NO_ENCODE_QUOTES: کوتیشن ها کد نشوند.FILTER_FLAG_STRIP_LOWوSTRIP_HIGH: حذف کاراکترهای خارج از بازه ASCII.FILTER_FLAG_ALLOW_FRACTION،ALLOW_THOUSAND،ALLOW_SCIENTIFIC: قالب های مختلف عدد.FILTER_FLAG_IPV4،IPV6،NO_PRIV_RANGE،NO_RES_RANGE: محدودیت های IP.
راهنمای سریع تنظیم پیش فرض ها
- در
php.iniمقدارfilter.defaultرا تعیین کن. - در صورت نیاز،
filter.default_flagsرا اضافه کن. - سپس روی ورودی ها از توابع بخش فیلتر استفاده کن.
جمع بندی سریع
- فیلتر PHP جلوی ورودی بد را می گیرد.
- نصب لازم نیست؛ پیش فرض فعال است.
- تنظیم ها در php.ini قابل مدیریت است.
- از validate برای چک، از sanitize برای تمیزکاری استفاده کن.
- پرچم ها رفتار فیلتر را دقیق تر می کنند.