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,216 responses to “Input validation with filter functions”

  1. Williamcab Avatar

    рейтинг казино без верификации Таким образом, выбор в пользу онлайн казино без верификации — это осознанный компромисс. С одной стороны, пользователь приобретает максимальную степень приватности, скорость сделок и часто — более выгодные условия по бонусам. С другой — он добровольно отказывается от правовой защиты, принимая на себя все финансовые и репутационные риски. Такие платформы представляют собой нишевый, но устойчивый сегмент гемблинг-индустрии, отвечая на конкретный запрос современного цифрового общества. Их существование и эволюция продолжают стимулировать дискуссию о балансе между приватностью, безопасностью и необходимостью регулирования в мире, где границы между реальной и цифровой личностью становятся всё более размытыми.

  2. TracyThics Avatar
    TracyThics
  3. LarryViofs Avatar
    LarryViofs

    Neuro Relief USA: neurontin 100mg cost – Neuro Relief USA

  4. Williamcab Avatar

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

  5. Leonarddeark Avatar
    Leonarddeark

    Smart GenRx USA online pharmacy without insurance canadian pharmacy no scripts

  6. LinwoodTwirl Avatar
    LinwoodTwirl

    discount pharmacy: discount pharmacy card – Smart GenRx USA

  7. LinwoodTwirl Avatar
    LinwoodTwirl

    ivermectin iv: Iver Therapeutics – buy ivermectin cream

  8. TracyThics Avatar
    TracyThics

    https://smartgenrxusa.com/# online pharmacy in turkey

  9. LarryViofs Avatar
    LarryViofs

    sertraline generic: sertraline – generic zoloft

  10. TracyThics Avatar
    TracyThics

    https://sertralineusa.shop/# zoloft no prescription

  11. LarryViofs Avatar
    LarryViofs

    Smart GenRx USA: Smart GenRx USA – canadian online pharmacy cialis

  12. GlennTix Avatar
    GlennTix

    https://neuroreliefusa.com/# neurontin 800 mg pill

  13. LinwoodTwirl Avatar
    LinwoodTwirl

    sertraline: buy zoloft – zoloft no prescription

  14. GlennTix Avatar
    GlennTix

    http://sertralineusa.com/# zoloft no prescription

  15. TracyThics Avatar
    TracyThics
  16. TracyThics Avatar
    TracyThics
  17. LinwoodTwirl Avatar
    LinwoodTwirl

    online pharmacy drop shipping: austria pharmacy online – Smart GenRx USA

  18. Leonarddeark Avatar
    Leonarddeark

    online pharmacy weight loss Smart GenRx USA Smart GenRx USA

  19. LarryViofs Avatar
    LarryViofs

    buy zoloft: zoloft medication – buy zoloft

  20. TracyThics Avatar
    TracyThics

    https://sertralineusa.com/# sertraline generic

  21. GlennTix Avatar
    GlennTix

    https://smartgenrxusa.shop/# legal online pharmacy coupon code

  22. LinwoodTwirl Avatar
    LinwoodTwirl

    Iver Therapeutics: buy stromectol canada – Iver Therapeutics

  23. LarryViofs Avatar
    LarryViofs

    Iver Therapeutics: Iver Therapeutics – stromectol for sale

  24. 注册 Avatar

    Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  25. TracyThics Avatar
    TracyThics

    http://neuroreliefusa.com/# Neuro Relief USA

  26. TracyThics Avatar
    TracyThics

    http://sertralineusa.com/# zoloft medication

  27. LinwoodTwirl Avatar
    LinwoodTwirl

    zoloft cheap: sertraline generic – order zoloft

  28. RonaldCrido Avatar

    7кейс официальный сайт удобен для новичка.

  29. LarryViofs Avatar
    LarryViofs

    zoloft tablet: zoloft cheap – zoloft medication

  30. Leonarddeark Avatar
    Leonarddeark

    zoloft medication sertraline sertraline generic

  31. TracyThics Avatar
    TracyThics

    https://ivertherapeutics.shop/# ivermectin over the counter canada

  32. LinwoodTwirl Avatar
    LinwoodTwirl

    Neuro Relief USA: neurontin 300 mg capsule – Neuro Relief USA

  33. LarryViofs Avatar
    LarryViofs

    ivermectin gel: stromectol usa – Iver Therapeutics

  34. TracyThics Avatar
    TracyThics
  35. LinwoodTwirl Avatar
    LinwoodTwirl

    zoloft without dr prescription: zoloft no prescription – zoloft pill

  36. Michaelsib Avatar

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

  37. GlennTix Avatar
    GlennTix

    http://neuroreliefusa.com/# buy neurontin 100 mg

  38. Leonarddeark Avatar
    Leonarddeark

    neurontin 100 Neuro Relief USA Neuro Relief USA

Leave a Reply

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