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

3,619 responses to “Input validation with filter functions”

  1. DavidTenty Avatar
    DavidTenty

    Hey guys, Just now discovered the best source from India for cheap meds. For those looking for cheap antibiotics safely, IndiaPharm is the best place. It has secure delivery to USA. Visit here: safe indian pharmacy. Good luck.

  2. Thomasnib Avatar

    промокод 1xBet при регистрации Воспользуйтесь бонусом при регистрации на https://instrumentmir.ru/image/pgs/?1xbet_promokod_pri_registracii_na_segodnya_besplatno.html и заберите 32 500 рублей + 100% к депозиту, чтобы начать игру.

  3. Carroljew Avatar
    Carroljew

    Hey there, Just now came across a reliable resource for affordable pills. For those seeking and need meds from Mexico, this store is worth checking out. They ship to USA plus secure. Visit here: visit website. Many thanks.

  4. DavidTenty Avatar
    DavidTenty

    Hello everyone, Lately came across a reliable online source to buy medication. For those seeking and need cheap antibiotics, Pharm Mex is a game changer. Fast shipping plus secure. Visit here: Pharm Mex. I hope you find what you need.

  5. Carroljew Avatar
    Carroljew

    To be honest, Just now stumbled upon an amazing source from India to save on Rx. If you want to buy cheap antibiotics without prescription, this store is highly recommended. You get fast shipping to USA. Visit here: https://indiapharm.in.net/#. Best regards.

  6. JamesFUS Avatar
    JamesFUS

    Greetings, I just discovered a great online source for affordable pills. For those seeking and need generic drugs, Pharm Mex is worth checking out. No prescription needed plus it is safe. Link is here: safe mexican pharmacy. Have a great week.

  7. JamesFUS Avatar
    JamesFUS

    Hey there, Just now discovered a trusted website for affordable pills. If you want to save money and want generic drugs, this store is a game changer. Fast shipping and it is safe. Take a look: pharm.mex.com. Thanks!

  8. Arthursleby Avatar
    Arthursleby

    Hi all, I recently came across a great website for affordable pills. For those looking for ED meds at factory prices, IndiaPharm is very reliable. You get wholesale rates guaranteed. More info here: check availability. Hope it helps.

  9. Lloydlepay Avatar

    Grab your betwinner first deposit bonus by registering through https://bet-promo-codes.com/sportsbook-reviews/betwinner-registration/ and topping up your account for the first time.

  10. Arthursleby Avatar
    Arthursleby

    Greetings, Lately discovered a great online drugstore to buy generics. If you need ED meds cheaply, IndiaPharm is worth checking. You get secure delivery guaranteed. Take a look: visit website. Hope it helps.

  11. Carroljew Avatar
    Carroljew

    To be honest, Just now ran into a great resource to buy medication. If you want to save money and want cheap antibiotics, Pharm Mex is the best option. Fast shipping and it is safe. Check it out: https://pharm.mex.com/#. Get well soon.

  12. JamesFUS Avatar
    JamesFUS

    Greetings, Just now found a great website for affordable pills. If you want to save money and need affordable prescriptions, this store is a game changer. No prescription needed plus secure. Check it out: Pharm Mex. Thx.

  13. Carroljew Avatar
    Carroljew

    Hi guys, Lately ran into an awesome Mexican pharmacy to save on Rx. If you want to save money and need cheap antibiotics, this site is the best option. Fast shipping plus secure. Check it out: read more. Appreciate it.

  14. JamesFUS Avatar
    JamesFUS

    Hello everyone, I just found an awesome website to buy medication. If you are tired of high prices and want affordable prescriptions, this store is worth checking out. They ship to USA plus very reliable. Take a look: mexican pharmacy online. Best of luck.

  15. Arthursleby Avatar
    Arthursleby

    To be honest, I just found a great website for cheap meds. If you are tired of high prices and want cheap antibiotics, Pharm Mex is a game changer. Great prices and secure. Visit here: click here. Appreciate it.

  16. Arthursleby Avatar
    Arthursleby

    Greetings, Lately came across a trusted online source to save on Rx. If you want to save money and want meds from Mexico, this store is worth checking out. Great prices and it is safe. Check it out: https://pharm.mex.com/#. Hope it helps.

  17. Carroljew Avatar
    Carroljew

    Hello, Just now came across a useful Indian pharmacy for cheap meds. If you need medicines from India without prescription, this store is very reliable. It has fast shipping to USA. Visit here: order medicines from india. Good luck.

Leave a Reply

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