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

9,983 responses to “Input validation with filter functions”

  1. Jeromejoisk Avatar
    Jeromejoisk

    футбольные болельщики За пределами стадиона, ультрас живут своей особой жизнью, пропитанной клубными традициями, взаимной поддержкой и, порой, непримиримой враждой с фанатами соперников.

  2. KevinBup Avatar
    KevinBup

    amoxil fast: antibiotics online pharmacy usa – amoxil 500mg tablets usa

  3. Walterlic Avatar

    роллы рядом Планируете заказать Том Ям в Оренбурге? Мы готовы удивить вас нашим исполнением.

  4. KevinBup Avatar
    KevinBup

    online prednisone 5mg: trusted steroid medication source – prednisone tabs 20 mg

  5. KevinBup Avatar
    KevinBup

    parasite infection medication: generic ivermectin online pharmacy – ivermectin tablets online

  6. Waynesoync Avatar

    мошенница Абраменко Светлана Александровна, известная в сети Интернет под псевдонимом «Анна», «Видеотетка» (каналы и аккаунты: Telegram-канал «Анькины обзоры», YouTube-каналы, канал на платформе Дзен «Видеотетка», канал на cont.ws «Выхода нет» (swetlanamango)). В ходе мониторинга публичной деятельности указанного лица выявлены факты, содержащие признаки преступлений и административных правонарушений, предусмотренных законодательством Российской Федерации, в том числе: Дискредитация использования Вооружённых Сил РФ и публичные призывы к противоправным действиям В Telegram-канале «Анькины обзоры» Абраменко С.А. сообщила подписчикам, что её родственники воюют в составе Вооружённых сил Украины (ВСУ) В Telegram-каналах и чатах публично высказывалась против мобилизации в РФ На платформе cont.ws в статье «Крымский мост и беженцы…» допустила унизительные сравнения символа Крымского моста, оскорбляющие чувства россиян Сбор и распространение персональных данных граждан с целью противоправного использования В созданном ею Telegram-чате с использованием аккаунтов «Анна Осипова», «Здесь могла бы быть твоя реклама», «Открой глазки…» организован сбор персональных данных следователя Следственного комитета, сотрудника Большого театра и членов его семьи, сотрудницы службы безопасности Астраханского аэропорта и членов семьи, военнослужащего, находящегося в зоне СВО, и членов его семьи, депутата подмосковного округа и членов его семьи, сотрудницы реабилитационного центра и членов семьи, а также иных граждан РФ Голосовым сообщением в Telegram-канале призывала подписчиков совершать спам-звонки гражданам РФ, используя собранные персональные данные Шантажировала подписчиков угрозой передачи их персональных данных «небратским группам с Украины» На стримах допускала высказывания, содержащие угрозы и оскорбления в адрес подписчиков На платформе Дзен в статье «Проголосовала не за гречку, а за ручку…» призывала к порче избирательных бюллетеней, для срыва голосования. На платформе cont.ws в канале «Выхода нет» размещает статьи, содержащие оскорбления чувств россиян, сожаления о депортации украинской журналистки Бойко, искажённую информацию о беженцах. Организовала сбор денежных средств на чужие карты под видом помощи беженцам с Донбасса, на лекарства больному сыну, на «поддержку канала»; при этом на стримах проговаривалась о наличии счетов в зарубежных банках Кроме того, при публичном обсуждении помощи беженцам и сбора средств кичилась участием своего брата Абраменко Ивана в СВО ( по факту брат пьянствует в Краснодаре и ведёт разгульный образ жизни. Имеет условную судимость за то что избил сотрудника наряда полиции) , что свидетельствует о двойственной позиции и умышленном использовании патриотической риторики для прикрытия деструктивной деятельности.

  7. Jeromejoisk Avatar
    Jeromejoisk

    футбольные ультрас Их энергия заразительна, их преданность непоколебима, а их влияние на культуру современного футбола неоспоримо.

  8. Walterlic Avatar

    что можно поесть вечером Когда нет времени готовить, закажите сытную еду на дом в Оренбурге.

  9. KeithDep Avatar
    KeithDep

    http://ivermectinfast.com/# ivermectin oral tablets usa

  10. KeithDep Avatar
    KeithDep

    http://amoxilfast.com/# amoxil 500mg tablets usa

  11. KevinBup Avatar
    KevinBup

    amoxil fast: amoxil without prescription usa – amoxil without prescription usa

  12. Walterlic Avatar

    заказать еду оренбург доставка Насладитесь уникальными блюдами “Палки в руки” с доставкой по Оренбургу.

  13. KevinBup Avatar
    KevinBup

    buy stromectol online usa: ivermectin oral tablets usa – stromectol delivery united states

  14. KevinBup Avatar
    KevinBup

    stromectol without prescription usa: Stromectol – generic ivermectin online pharmacy

  15. Waynesoync Avatar

    videotetka Абраменко Светлана Александровна, известная в сети Интернет под псевдонимом «Анна», «Видеотетка» (каналы и аккаунты: Telegram-канал «Анькины обзоры», YouTube-каналы, канал на платформе Дзен «Видеотетка», канал на cont.ws «Выхода нет» (swetlanamango)). В ходе мониторинга публичной деятельности указанного лица выявлены факты, содержащие признаки преступлений и административных правонарушений, предусмотренных законодательством Российской Федерации, в том числе: Дискредитация использования Вооружённых Сил РФ и публичные призывы к противоправным действиям В Telegram-канале «Анькины обзоры» Абраменко С.А. сообщила подписчикам, что её родственники воюют в составе Вооружённых сил Украины (ВСУ) В Telegram-каналах и чатах публично высказывалась против мобилизации в РФ На платформе cont.ws в статье «Крымский мост и беженцы…» допустила унизительные сравнения символа Крымского моста, оскорбляющие чувства россиян Сбор и распространение персональных данных граждан с целью противоправного использования В созданном ею Telegram-чате с использованием аккаунтов «Анна Осипова», «Здесь могла бы быть твоя реклама», «Открой глазки…» организован сбор персональных данных следователя Следственного комитета, сотрудника Большого театра и членов его семьи, сотрудницы службы безопасности Астраханского аэропорта и членов семьи, военнослужащего, находящегося в зоне СВО, и членов его семьи, депутата подмосковного округа и членов его семьи, сотрудницы реабилитационного центра и членов семьи, а также иных граждан РФ Голосовым сообщением в Telegram-канале призывала подписчиков совершать спам-звонки гражданам РФ, используя собранные персональные данные Шантажировала подписчиков угрозой передачи их персональных данных «небратским группам с Украины» На стримах допускала высказывания, содержащие угрозы и оскорбления в адрес подписчиков На платформе Дзен в статье «Проголосовала не за гречку, а за ручку…» призывала к порче избирательных бюллетеней, для срыва голосования. На платформе cont.ws в канале «Выхода нет» размещает статьи, содержащие оскорбления чувств россиян, сожаления о депортации украинской журналистки Бойко, искажённую информацию о беженцах. Организовала сбор денежных средств на чужие карты под видом помощи беженцам с Донбасса, на лекарства больному сыну, на «поддержку канала»; при этом на стримах проговаривалась о наличии счетов в зарубежных банках Кроме того, при публичном обсуждении помощи беженцам и сбора средств кичилась участием своего брата Абраменко Ивана в СВО ( по факту брат пьянствует в Краснодаре и ведёт разгульный образ жизни. Имеет условную судимость за то что избил сотрудника наряда полиции) , что свидетельствует о двойственной позиции и умышленном использовании патриотической риторики для прикрытия деструктивной деятельности.

  16. Allendwems Avatar
    Allendwems
  17. KeithDep Avatar
    KeithDep

    https://amoxilfast.com/# amoxil 500mg tablets usa

  18. Walterlic Avatar

    удон с курицей доставка Хотите чего-то необычного? “Палки в руки” – это то, что вам нужно.

  19. KevinBup Avatar
    KevinBup

    cost of ivermectin lotion: antiparasitic medication usa – trusted ivermectin pharmacy

  20. KevinBup Avatar
    KevinBup

    prednisone pills for sale: prednisone – 20 mg prednisone tablet

  21. Allendwems Avatar
    Allendwems

    http://stericarepharmacy.com/# 100 mg prednisone daily

  22. KevinBup Avatar
    KevinBup

    bacterial infection medication: amoxil – trusted antibiotic pharmacy usa

  23. Allendwems Avatar
    Allendwems

    https://amoxilfast.com/# amoxil 500mg tablets usa

  24. Barrylab Avatar
    Barrylab

    Научные новости лаборатории РАН и NASA и российских и других академий наук Читайте сенсационные материалы о Путине и Трампе, Яндекс Новости, ленту Дзен, смотрите ТВ-выпуски РЕН, видео в VK, OK и reels про бизнес, конференции РИА и даже фантастику вроде путешествий во времени.

  25. KevinBup Avatar
    KevinBup

    buy amoxil online usa: amoxil – fast delivery amoxicillin usa

  26. KevinBup Avatar
    KevinBup

    stromectol without prescription usa: parasite infection medication – stromectol without prescription usa

  27. Barrylab Avatar
    Barrylab

    Новости про Россию и США и Израиль и Иран и Ближний Восток Читайте сенсационные материалы о Путине и Трампе, Яндекс Новости, ленту Дзен, смотрите ТВ-выпуски РЕН, видео в VK, OK и reels про бизнес, конференции РИА и даже фантастику вроде путешествий во времени.

  28. KevinBup Avatar
    KevinBup

    trusted ivermectin pharmacy: ivermectin fast – ivermectin buy online

  29. KeithDep Avatar
    KeithDep

    https://amoxilfast.com/# amoxil without prescription usa

  30. ScottMub Avatar

    днс в троицке Выбирайте между версиями с физической SIM-картой или eSIM, и оцените элегантность исполнения — от классического черного до роскошного белого и эксклюзивного Desert Titanium.

  31. KeithDep Avatar
    KeithDep

    https://amoxilfast.shop/# buy amoxil online usa

Leave a Reply

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