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

  1. Ralphfoogs Avatar
    Ralphfoogs

    buy doxycycline antibiotics antibiotics generic antibiotics online cheap

  2. Ralphfoogs Avatar
    Ralphfoogs

    online antibiotics Antibiotics Pharmacology prescription antibiotic

  3. Richardemina Avatar
    Richardemina

    antibiotics over the counter IARP can you buy antibiotics over the counter

  4. RobertGaurl Avatar

    BlackSprut marketplace официальный сайт для входа и регистрации
    blsp at bs2best at

    blsp at

  5. WilliamBom Avatar
    WilliamBom

    Azithromycin Dihydrate prescribed antibiotics online

  6. RobertGaurl Avatar

    BlackSprut marketplace официальный сайт для входа и регистрации
    blsp at bs2best at

    bs2best at

  7. Michaelvop Avatar
    Michaelvop

    reliable mexican pharmacies: reliable mexican pharmacies – mexican pharmacies no prescription

  8. MatthewBom Avatar
    MatthewBom

    canadian pharmacy meds: Online medicine home delivery – legit canadian pharmacy

  9. Michaelvop Avatar
    Michaelvop

    BorderCare RX: BorderCareRX – mexican pharmacies near me

  10. MatthewBom Avatar
    MatthewBom

    canadian pharmacy 24 com: NorthCareRx – NorthCareRx

  11. Edwardkeync Avatar
    Edwardkeync

    https://primeindiameds.com/# top online pharmacy

  12. MatthewBom Avatar
    MatthewBom

    canadian pharmacy com: NorthCareRx – NorthCareRx

  13. Stevewache Avatar
    Stevewache

    legit mexican pharmacy without prescription mail order pharmacy mexico legit mexican pharmacy without prescription

  14. Michaelvop Avatar
    Michaelvop

    NorthCareRx: canadian medications – NorthCareRx

  15. RobertGaurl Avatar

    BlackSprut marketplace официальный сайт для входа и регистрации
    blsp at bs2best at

    bs2 market

  16. Alfredopashy Avatar
    Alfredopashy

    Узнай больше на официальном сайте компании : https://www.вип-свет.рф/

  17. Edwardkeync Avatar
    Edwardkeync
  18. Stevewache Avatar
    Stevewache

    canadian mail order pharmacy buy medicines online in india legitimate canadian online pharmacies

  19. RobertGaurl Avatar

    BlackSprut marketplace официальный сайт для входа и регистрации
    blsp at bs2best at
    blsp at

  20. Michaelvop Avatar
    Michaelvop

    best canadian pharmacy to order from: Prime India Meds – online pharmacy no prescription needed

  21. MatthewBom Avatar
    MatthewBom

    pharmacy without prescription: indian pharmacy – safe canadian pharmacy

  22. MatthewBom Avatar
    MatthewBom

    BorderCareRX: mexican pharmacies no prescription – is mexipharmacy legit

  23. PhillipStibe Avatar
    PhillipStibe

    https://primeindiameds.shop/# canadian pharmacy meds

  24. Michaelvop Avatar
    Michaelvop

    my canadian pharmacy rx: Prime India Meds – best india pharmacy

  25. MatthewBom Avatar
    MatthewBom

    BorderCareRX: reputable pharmacies in mexico – legit mexican pharmacy without prescription

  26. Stevewache Avatar
    Stevewache

    reliable canadian online pharmacy NorthCareRx canadian drug prices

  27. Michaelvop Avatar
    Michaelvop

    canadian online pharmacy reviews: canada pharmacy – NorthCareRx

  28. Edwardkeync Avatar
    Edwardkeync
  29. RobertGaurl Avatar

    BlackSprut marketplace официальный сайт для входа и регистрации
    blsp at bs2best at

    bs2best at

  30. PhillipStibe Avatar
    PhillipStibe

    http://bordercarerx.com/# reputable pharmacies in mexico

  31. PhillipStibe Avatar
    PhillipStibe

    http://primeindiameds.com/# medical pharmacy west

  32. Michaelvop Avatar
    Michaelvop

    pharmacy rx world canada: Prime India Meds – cyprus online pharmacy

  33. MatthewBom Avatar
    MatthewBom

    what’s the best online pharmacy: Prime India Meds – my canadian pharmacy reviews

  34. Stevewache Avatar
    Stevewache

    canadian pharmacy meds online canadian pharmacy review canadian mail order pharmacy

  35. RobertGaurl Avatar

    BlackSprut marketplace официальный сайт для входа и регистрации
    blsp at bs2best at

    bs2best at

  36. MatthewBom Avatar
    MatthewBom

    NorthCareRx: NorthCareRx – NorthCareRx

  37. MatthewBom Avatar
    MatthewBom

    mexican pharmacies no prescription: BorderCare RX – mexican pharma

  38. Michaelvop Avatar
    Michaelvop

    mexico pharmacies online: reliable mexican pharmacies – reliable mexican pharmacies

  39. Stevewache Avatar
    Stevewache

    BorderCareRX mail order pharmacy mexico mexican pharmacies near me

  40. Edwardkeync Avatar
    Edwardkeync

    https://primeindiameds.shop/# best value pharmacy

  41. Michaelvop Avatar
    Michaelvop

    cost less pharmacy: mail order pharmacy india – online pharmacy worldwide shipping

  42. Edwardkeync Avatar
    Edwardkeync

    https://bordercarerx.com/# mexican pharmacies no prescription

  43. RobertGaurl Avatar

    BlackSprut marketplace официальный сайт для входа и регистрации
    blsp at bs2best at

    blacksprut

  44. MatthewBom Avatar
    MatthewBom

    my canadian pharmacy reviews: NorthCareRx – vipps canadian pharmacy

  45. Michaelvop Avatar
    Michaelvop

    canadian drug pharmacy: best online canadian pharmacy – canadian 24 hour pharmacy

Leave a Reply

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