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

1,744 responses to “Input validation with filter functions”

  1. JoshuaMiz Avatar
    JoshuaMiz

    list of canadian pharmacies online https://dmucialis.xyz/# Dmu Cialis

  2. CialisHaugh Avatar

    Tadalafil price: DmuCialis – DmuCialis

  3. DmuSaT Avatar

    Dmu Cialis: DmuCialis – DmuCialis

  4. casino-games-159 Avatar

    ігри казино онлайн ігри казино

  5. JoshuaMiz Avatar
    JoshuaMiz

    canadian prescription pharmacy https://neokamagra.xyz/# Neo Kamagra

  6. DmuSaT Avatar

    Neo Kamagra: NeoKamagra – sildenafil oral jelly 100mg kamagra

  7. SteveMar Avatar
    SteveMar

    canada drugs without prescription https://edpillsafib.com/# EdPillsAfib

  8. JosephGem Avatar

    Положительные отзывы сотрудников Гибкость условий и творческая свобода позволяют реализовывать свои идеи и чувствовать себя комфортно на рабочем месте.

  9. DanielLox Avatar

    CorPharmacy: CorPharmacy – CorPharmacy

  10. Williamopete Avatar
    Williamopete

    ViagraNewark Viagra Newark Sildenafil Citrate Tablets 100mg

  11. JamesHow Avatar

    Cor Pharmacy: CorPharmacy – canada pharmacy 24h

  12. Michaelrof Avatar

    Услуги эвакуатора Эвакуатор Таганрог – это не просто географическое указание, это обещание оперативной и профессиональной помощи водителям, оказавшимся в беде на дорогах этого прекрасного города.

  13. DanielLox Avatar

    Viagra Newark: Viagra Newark – buy Viagra over the counter

  14. SteveMar Avatar
    SteveMar

    pharmacy canadian http://viagranewark.com/# ViagraNewark

  15. WilliamBof Avatar

    промокод 1хБет при регистрации Воспользуйтесь бонус при регистрации на http://thealeshaart.com/wp-includes/pages/1xbet-promokod-pri-registracii-besplatno.html и получите 32 500 рублей + бонус 100%, чтобы начать игру.

  16. Williamopete Avatar
    Williamopete

    cheapest viagra Generic Viagra for sale ViagraNewark

  17. JamesHow Avatar

    CorPharmacy: CorPharmacy – online pharmacy meds

  18. SteveMar Avatar
    SteveMar

    best canadian pharmacy for viagra https://viagranewark.com/# buy Viagra online

  19. Michaeluplip Avatar

    Официальный промокод мелбет при регистрации даёт возможность получить бонус на первый депозит в размере до 50 000 рублей, либо фрибет 30EUR. Промокод проверен и актуален, работает только в офшорной версии бк Мелбет в 2026 году. Букмекерская контора Мелбет пользуется популярностью, славится щедростью, поскольку вознаграждает новых пользователей, впервые зарегистрировавших на портале, и постоянных беттеров. В большинстве случаев награды в виде промокодов – специальных комбинаций, требующих активации. Благодаря melbet промокод на сегодня можно получить увеличенный бонус, главное – правильно использовать буквенно-цифровое сочетание. Бонус не является безвозмездным подарком от букмекера. Чтобы получить возможность вывода денежных средств, беттеру предстоит выполнить ряд условий. Что обеспечивает промокод в Мелбет, как активируют, доступные бонусы при регистрации на сегодня, условия и правила отыгрыша – подробно рассмотрим в обзоре.

  20. CharlesRhini Avatar

    https://corpharmacy.xyz/# cheap viagra online canadian pharmacy

  21. DanielLox Avatar

    Cheap Sildenafil 100mg: Viagra tablet online – Viagra Newark

  22. Williamopete Avatar
    Williamopete

    CorPharmacy Cor Pharmacy CorPharmacy

  23. JamesHow Avatar

    pharmacy canadian: Cor Pharmacy – CorPharmacy

  24. SteveMar Avatar
    SteveMar

    mail order pharmacy canada http://edpillsafib.com/# EdPillsAfib

  25. BobbyBease Avatar

    Visit the company’s main website — http://ruptur.com/

  26. DarrylVah Avatar

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

  27. Lloydquews Avatar

    Официальная страница компании в сети : https://www.apelsin.su/

  28. Williamopete Avatar
    Williamopete

    Viagra Newark ViagraNewark sildenafil over the counter

  29. JamesHow Avatar

    CorPharmacy: canadian pharmacy 365 – Cor Pharmacy

  30. SteveMar Avatar
    SteveMar

    trust online pharmacies http://corpharmacy.com/# Cor Pharmacy

  31. Williamopete Avatar
    Williamopete

    Cor Pharmacy Cor Pharmacy Cor Pharmacy

  32. JamesHow Avatar

    ViagraNewark: ViagraNewark – over the counter sildenafil

  33. SteveMar Avatar
    SteveMar

    family discount pharmacy https://edpillsafib.xyz/# cheapest online ed meds

  34. DarrylVah Avatar

    женская обувь натуральная кожа зеленая Dsert shoes официальный интернет магазин – ваш проводник в мир качественной турецкой обуви напрямую от производителя.

Leave a Reply

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