Input validation with filter functions

Introduction
Although PHP has a lot of filter functions available, I found that still to many people are using (often incorrect) regular expressions to validate user input. The filter extension is simple, standard available and will fulfill the common validations. Below some pratical examples and things to consider when working with PHP filter functions.

Which are available?
Below a shameless copy paste of the PHP documentation.

  • filter_has_var — Checks if variable of specified type exists
  • filter_id — Returns the filter ID belonging to a named filter
  • filter_input_array — Gets external variables and optionally filters them
  • filter_input — Gets a specific external variable by name and optionally filters it
  • filter_list — Returns a list of all supported filters
  • filter_var_array — Gets multiple variables and optionally filters them
  • filter_var — Filters a variable with a specified filter

Pratical use

Sanitizing
“Filter input escape output” every developer knows this but it is a repetitive job but with the filter extension filterering input became a lot easier. When you correctly filter input you drastically lower the change of application vulnerabilities.

Sanitizing a single variable

$sText = ' ';
$sText = filter_var($sText, FILTER_SANITIZE_STRING);
echo $sText; // This is a comment from a alert("scriptkiddie");

Sanitizing multiple variables, same principle as above but with an array, the filter will sanitize all values inside the array

filter_var_array($_POST, FILTER_SANITIZE_STRING);

Validating an email address

if(filter_var($sEmail, FILTER_VALIDATE_EMAIL) === false) {
     $this->addError('Invalid email address', $sEmail);
}

Validation a complete array
Validating all your data at once with a single filter will make your code clear, all in one place and is more easy to maintain an example below.

$aData = array(
	'student'	=> 'Sjoerd Maessen',
	'class'		=> '21',
	'grades' => array(
			'math' => 9,
			'geography' => 66,
			'gymnastics' => 7.5
	)
);

$aValidation = array(
	'student'	=> FILTER_SANITIZE_STRING,
	'class'		=> FILTER_VALIDATE_INT,
	'grades'	=> array(
				'filter' => FILTER_VALIDATE_INT,
				'flags'	 => FILTER_FORCE_ARRAY,
				'options'=> array('min_range'=>0, 'max_range'=>10))
);

echo '
';
var_dump(filter_var_array($aData, $aValidation));

/*array(3) {
  ["student"]=>
  string(14) "Sjoerd Maessen"
  ["class"]=>
  int(21) // Thats strange, my string is converted
  ["grades"]=>
  array(3) {
    ["math"]=>
    int(9)
    ["geography"]=>
    bool(false) // 66 is > 10
    ["gymnastics"]=>
    bool(false) // 7.5 is not an int
  }
}*/

Note: okay I did not expect that the string '21' would validate true against FILTER_VALIDATE_INT, after some more testing I also noticed that min_range and max_range only work with FILTER_VALIDATE_INT, when using floats or scalars the options are just ignored, so be aware!

The sanitizing examples above can be made easily more restrictive by adding flags like FILTER_FLAG_STRIP_LOW to the sanitize filter, FILTER_FLAG_STRIP_LOW will for example strip all characters that have a numerical value below 32.

Things to consider
Although the filter functions are some time available some of them aren't flawless, at some points the documentation is missing or very unclear. Another example is the filter_var validation for IPv6 addresses. (see bug report #50117). So it is always a good thing to check if the filter is really doing what you expect it does. Write testcases before using. If you use it correctly you can write your validations in the blink of an eye, and this extension will be your new best friend.

Links
Filter functions
Filter flags

Comments

5,523 responses to “Input validation with filter functions”

  1. Leonarddeark Avatar
    Leonarddeark

    neurontin tablets 300mg Neuro Relief USA neurontin online

  2. RonaldCrido Avatar

    Приветственный 7k казино бонус хорош для старта, но при редких депозитах отыгрыш растягивается.

  3. LinwoodTwirl Avatar
    LinwoodTwirl

    ivermectin 3 mg: Iver Therapeutics – buy stromectol online uk

  4. RonaldCrido Avatar

    Верификация 7k казино регистрация заняла около 30 минут: быстро, но без подтверждения вывод ограничен.

  5. binance Avatar

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.

  6. LinwoodTwirl Avatar
    LinwoodTwirl

    Iver Therapeutics: ivermectin eye drops – stromectol covid 19

  7. Robertfligo Avatar

    тесто для пиццы “Додо Пицца” – это бренд, который стал синонимом качества и удобства в сфере доставки пиццы. Известная своими инновациями и стремлением к совершенству, “Додо Пицца” предлагает клиентам широкий выбор вкусных и свежих блюд.

  8. LarryViofs Avatar
    LarryViofs

    Iver Therapeutics: Iver Therapeutics – Iver Therapeutics

  9. TracyThics Avatar
    TracyThics

    http://neuroreliefusa.com/# cost of neurontin 600 mg

  10. TracyThics Avatar
    TracyThics
  11. Charleswem Avatar

    пицца куба телефон “Куб пицца Рязань” – необычно, вкусно, незабываемо.

  12. RonaldCrido Avatar

    Проверял несколько раз — работает стабильно, добавил в закладки.

  13. RonaldCrido Avatar

    Сравнивал несколько площадок, и 7k casino показалось самым сбалансированным: выплаты быстрые, бонусные правила ясные, но для фриспин-хантеров есть более подходящие варианты.

  14. LarryViofs Avatar
    LarryViofs

    Neuro Relief USA: Neuro Relief USA – neurontin prescription coupon

  15. Leonarddeark Avatar
    Leonarddeark

    canadian pharmacy oxycodone Smart GenRx USA Smart GenRx USA

  16. LinwoodTwirl Avatar
    LinwoodTwirl

    Iver Therapeutics: ivermectin usa price – Iver Therapeutics

  17. Robertduact Avatar

    рейтинг онлайн казино с лицензией в россии Приветственные бонусы и акции, предлагаемые легальными онлайн-казино, также играют немаловажную роль. Рейтинги учитывают не только щедрость бонусных предложений, но и прозрачность условий их отыгрыша. Честные казино предоставляют игрокам реальные шансы отыграть бонусные средства, без скрытых комиссий и необоснованно высоких требований к ставкам.

  18. LarryViofs Avatar
    LarryViofs

    neurontin 300 600 mg: neurontin 1800 mg – Neuro Relief USA

  19. LinwoodTwirl Avatar
    LinwoodTwirl

    Neuro Relief USA: buying neurontin online – neurontin canada

  20. TracyThics Avatar
    TracyThics

    https://smartgenrxusa.com/# canadian pharmacy world coupons

  21. RonaldCrido Avatar

    Установка замков spб нужна при замене полотна двери или усилении безопасности.

  22. RonaldCrido Avatar

    Зеркало держу в закладках, однако акции и бонусы удобнее на основном адресе.

  23. TracyThics Avatar
    TracyThics

    http://smartgenrxusa.com/# canadian pharmacy drugs online

  24. Charleswem Avatar

    пиццерия куба рязань официальный “Пицца Рязань с доставкой” – наслаждайтесь любимым блюдом, не выходя из дома.

  25. LarryViofs Avatar
    LarryViofs

    Iver Therapeutics: Iver Therapeutics – stromectol price in india

  26. https://www.marocbikhir.com/user/profile/554203 Avatar

    References:

    Medicine for bodybuilding without side effects

    References:
    https://www.marocbikhir.com/user/profile/554203

  27. LinwoodTwirl Avatar
    LinwoodTwirl

    zoloft generic: zoloft without dr prescription – zoloft without rx

  28. TracyThics Avatar
    TracyThics
  29. LinwoodTwirl Avatar
    LinwoodTwirl

    Iver Therapeutics: Iver Therapeutics – stromectol price

  30. LarryViofs Avatar
    LarryViofs

    buy zoloft: zoloft buy – zoloft pill

  31. LarryViofs Avatar
    LarryViofs

    zoloft cheap: order zoloft – zoloft buy

  32. SergioTuh Avatar

    как подобрать цвета в одежде Как подобрать стильную одежду? Это значит идти в ногу со временем, но при этом сохранять свою индивидуальность. Стиль – это баланс между модой и личными предпочтениями.

  33. TracyThics Avatar
    TracyThics

    http://sertralineusa.com/# zoloft without rx

  34. LinwoodTwirl Avatar
    LinwoodTwirl

    Neuro Relief USA: neurontin 200 – neurontin tablets 100mg

  35. TracyThics Avatar
    TracyThics

    https://neuroreliefusa.shop/# drug neurontin 200 mg

  36. LarryViofs Avatar
    LarryViofs

    Smart GenRx USA: mexico pharmacy order online – legit pharmacy websites

  37. hedgedoc.eclair.ec-lyon.fr Avatar

    References:

    Best mass building steroids

    References:
    hedgedoc.eclair.ec-lyon.fr

  38. LinwoodTwirl Avatar
    LinwoodTwirl

    generic for zoloft: zoloft medication – generic zoloft

  39. Jimmygaf Avatar

    теплоход от китай-города Купить билеты на теплоход сегодня — значит подарить себе незабываемый день. Воспользуйтесь возможностью забронировать теплоход на день рождения, арендовать его для корпоратива в Москве или организовать уникальную свадьбу на воде. Отправляйтесь в захватывающее путешествие от Китай-города или насладитесь расписанием на выходные с аудиогидом, чтобы узнать больше о достопримечательностях столицы. Семейный круиз с детской программой или романтический ужин на теплоходе — выбор за вами. Акции и скидки делают речные прогулки еще более доступными.

  40. TracyThics Avatar
    TracyThics

Leave a Reply

Your email address will not be published. Required fields are marked *