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

7,010 responses to “Input validation with filter functions”

  1. Williamchabe Avatar
    Williamchabe

    Mens RX Index: cheap boner pills – online erectile dysfunction pills

  2. TylerShets Avatar
    TylerShets

    https://certifiedcanadarx.shop/# online canadian pharmacy

  3. StevenFlews Avatar

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

  4. AndrewMuh Avatar
    AndrewMuh

    canadian pharmacy meds review: certified canadian international pharmacy – Certified Canada Rx

  5. TylerShets Avatar
    TylerShets

    https://petmedsmonitor.com/# online pet pharmacy

  6. AndrewMuh Avatar
    AndrewMuh

    Certified Canada Rx: reputable canadian pharmacy – Certified Canada Rx

  7. Henryaloth Avatar
    Henryaloth
  8. Williamchabe Avatar
    Williamchabe

    pet med: online vet pharmacy – pet pharmacy online

  9. RobertFup Avatar
    RobertFup

    pet pharmacy Vet Rx Index vet pharmacy online

  10. Williamchabe Avatar
    Williamchabe

    ed treatments online: ed pills online – best online ed treatment

  11. TylerShets Avatar
    TylerShets
  12. Henryaloth Avatar
    Henryaloth
  13. RonaldCrido Avatar

    Доступ через https://1win-top013.top не требует VPN, открывается с любого провайдера.

  14. RonaldCrido Avatar

    В поисках высокого RTP заглянул на игровые автоматы 1вин — нашёл слоты с отдачей под 98%.

  15. AndrewMuh Avatar
    AndrewMuh

    Certified Canada Rx: canada drug pharmacy – legitimate canadian pharmacy online

  16. TylerShets Avatar
    TylerShets
  17. IsmaelNek Avatar
    IsmaelNek

    Remarkable! Its genuinely awesome article, I have got much clear idea about from this post.
    https://euro-house.com.ua/maibutnie-deteilinhu-chomu-ultrazvukovyi.html

  18. TylerShets Avatar
    TylerShets
  19. AndrewMuh Avatar
    AndrewMuh

    Mens RX Index: Mens RX Index – Mens RX Index

  20. Henryaloth Avatar
    Henryaloth

    https://certifiedcanadarx.com/# Certified Canada Rx

  21. Williamchabe Avatar
    Williamchabe

    Mens RX Index: generic ed meds online – Mens RX Index

  22. RobertFup Avatar
    RobertFup

    Mens RX Index what is the cheapest ed medication how to get ed pills

  23. Henryaloth Avatar
    Henryaloth
  24. Henryaloth Avatar
    Henryaloth
  25. AndrewMuh Avatar
    AndrewMuh

    generic ed meds online: cheapest ed pills – Mens RX Index

  26. Williamchabe Avatar
    Williamchabe

    Mens RX Index: Mens RX Index – Mens RX Index

  27. TylerShets Avatar
    TylerShets

    https://certifiedcanadarx.shop/# canada cloud pharmacy

  28. AndrewMuh Avatar
    AndrewMuh

    Mens RX Index: cheap ed meds – discount ed meds

  29. TylerShets Avatar
    TylerShets

    https://mensrxindex.shop/# best online ed medication

  30. Williamchabe Avatar
    Williamchabe

    pet meds online: pet meds for dogs – pet drugs online

  31. Henryaloth Avatar
    Henryaloth

    http://certifiedcanadarx.com/# best canadian pharmacy to order from

  32. Henryaloth Avatar
    Henryaloth

    https://certifiedcanadarx.com/# Certified Canada Rx

  33. Henryaloth Avatar
    Henryaloth

    http://petmedsmonitor.com/# pet drugs online

  34. AndrewMuh Avatar
    AndrewMuh

    canada pharmacy: the canadian drugstore – Certified Canada Rx

  35. Williamchabe Avatar
    Williamchabe

    Certified Canada Rx: canadianpharmacyworld – Certified Canada Rx

  36. AndrewMuh Avatar
    AndrewMuh

    Certified Canada Rx: Certified Canada Rx – Certified Canada Rx

  37. RobertFup Avatar
    RobertFup

    Certified Canada Rx canadian pharmacy near me canadian king pharmacy

  38. TylerShets Avatar
    TylerShets
  39. Williamcip Avatar
    Williamcip

    кинг казино вход King Casino предлагает захватывающий мир азартных игр с широким выбором развлечений и щедрыми бонусами.

  40. TylerShets Avatar
    TylerShets
  41. Henryaloth Avatar
    Henryaloth

    https://petmedsmonitor.com/# vet pharmacy online

  42. Williamchabe Avatar
    Williamchabe

    cheap ed meds: order ed meds online – ed medications cost

  43. Walteralcox Avatar

    Mobil versiya Бонус?ои пурракун? (Reload Bonuses): Ин бонус?о ба бозингарони мав?уда ?ангоми гузоштани пасандоз?ои минбаъда пешни?од карда мешаванд. Он?о ба бонуси хуш омадед монанданд, аммо одатан фоизи камтар доранд. Ма?сади он?о ниго? доштани бозингарон ва ?авасманд кардани он?о ба идомаи боз? мебошад.

  44. Henryaloth Avatar
    Henryaloth
  45. Henryaloth Avatar
    Henryaloth

Leave a Reply

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