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

2,884 responses to “Input validation with filter functions”

  1. JosephBab Avatar
    JosephBab

    buy modafinil from mexico no rx: Unm Pharm – п»їmexican pharmacy

  2. CraigKab Avatar
    CraigKab

    canadian neighbor pharmacy Nyu Pharm legit canadian pharmacy

  3. Michaelanoli Avatar
    Michaelanoli
  4. Kennethdiera Avatar
    Kennethdiera

    Umass India Pharm: Umass India Pharm – top 10 pharmacies in india

  5. JosephBab Avatar
    JosephBab

    legit canadian pharmacy: Nyu Pharm – canada pharmacy online

  6. DelmarDap Avatar
    DelmarDap

    https://nyupharm.xyz/# canadian king pharmacy

  7. Kennethdiera Avatar
    Kennethdiera

    Umass India Pharm: legitimate online pharmacies india – Umass India Pharm

  8. Michaelanoli Avatar
    Michaelanoli

    http://umassindiapharm.com/# indian pharmacies safe

  9. JosephBab Avatar
    JosephBab

    Umass India Pharm: top 10 pharmacies in india – Online medicine home delivery

  10. CraigKab Avatar
    CraigKab

    canada drugs reviews Nyu Pharm canadian pharmacies online

  11. Michaelanoli Avatar
    Michaelanoli

    https://unmpharm.xyz/# legit mexico pharmacy shipping to USA

  12. Kennethdiera Avatar
    Kennethdiera

    Unm Pharm: buying from online mexican pharmacy – best online pharmacies in mexico

  13. JosephBab Avatar
    JosephBab

    Umass India Pharm: indian pharmacy – india online pharmacy

  14. kostenlos spielen verde casino Avatar

    Auch wenn es um die verwendeten Spielehersteller geht, kann die Spielothek in meinem Sonnenspiele Test
    daher die volle Punktzahl erreichen. Dass Sonnenspiele eben nicht nur Slots aus dem
    eigenen Haus sondern auch von anderen Providern anbietet, sorgt für eine erstklassige Vielfalt an Spielen. Darüber hinaus hat es mich bei meiner Sonnenspiele Bewertung aber sehr positiv überrascht, dass man in der Spielothek auch Games anderer Software Provider findet.

    Und natürlich kannst du alle Games dieser Hersteller auch
    im Sonnenspiele ausprobieren. Deshalb erhält die Spielothek Sonnenspiele in diesem Bereich
    auch die volle Punktzahl von mir.
    Teilen Sie Ihre Meinung mit oder erhalten Sie Antworten auf Ihre Fragen. Diskutieren Sie mit anderen Spielern über alles, was mit Sonnenspiele Spielothek zusammenhängt.

    Der Spieler aus Deutschland äußerte sich enttäuscht, nachdem er 100 Freispiele
    für den Eye of Horus-Slot beansprucht hatte, was zu minimalen Gewinnen von knapp 4 € führte.

    Auch dies ist ein Hinweis darauf, dass bei Sonnenspiele alles mit
    rechten Dingen zugeht. Das wichtigste ist natürlich, dass Sonnenspiele
    im Besitz einer Genehmigung aus Sachsen-Anhalt ist. Betrug und Abzocke kann ich bei Sonnenspiele zu
    100 % ausschließen!

    References:
    https://online-spielhallen.de/pelican-casino-freispiele-ihr-schlussel-zum-gluck/

  15. CraigKab Avatar
    CraigKab

    canadian pharmacy india Nyu Pharm canadian drugs pharmacy

  16. Kennethdiera Avatar
    Kennethdiera

    Umass India Pharm: india pharmacy – world pharmacy india

  17. Michaelanoli Avatar
    Michaelanoli

    https://umassindiapharm.com/# india online pharmacy

  18. JosephBab Avatar
    JosephBab

    legit mexican pharmacy without prescription: buy cialis from mexico – Unm Pharm

  19. DelmarDap Avatar
    DelmarDap

    https://unmpharm.com/# mexican pharmaceuticals online

  20. GonzaloChiep Avatar
    GonzaloChiep

    бонус код 1хбет: 1XMAXVIP обеспечивает новым клиентам стартовый бонус в виде 100% до 130$. Для получения данный бонус, нужно зарегистрироваться на официальном сайте 1хБет, сделать депозит на свой счет и подтвердить участие в акции. Затем бонусные средства автоматически будет зачислен на баланс пользователя.

  21. Michaelanoli Avatar
    Michaelanoli

    http://umassindiapharm.com/# online shopping pharmacy india

  22. Kennethdiera Avatar
    Kennethdiera

    Umass India Pharm: Umass India Pharm – pharmacy website india

  23. JosephBab Avatar
    JosephBab

    Unm Pharm: legit mexican pharmacy for hair loss pills – sildenafil mexico online

  24. JohnnyVew Avatar

    пляжи ко ланты тайланд ко ланта

  25. Kennethdiera Avatar
    Kennethdiera

    canadian online drugstore: certified canadian international pharmacy – safe canadian pharmacy

  26. CraigKab Avatar
    CraigKab

    canadian online pharmacy Nyu Pharm canadian pharmacy meds review

  27. JosephBab Avatar
    JosephBab

    generic drugs mexican pharmacy: Unm Pharm – legit mexican pharmacy for hair loss pills

  28. Michaelanoli Avatar
    Michaelanoli

    https://nyupharm.com/# canadian discount pharmacy

  29. DelmarDap Avatar
    DelmarDap

    https://nyupharm.com/# adderall canadian pharmacy

  30. Kennethdiera Avatar
    Kennethdiera

    certified canadian pharmacy: Nyu Pharm – canadian pharmacy meds review

  31. Michaelanoli Avatar
    Michaelanoli

    http://umassindiapharm.com/# cheapest online pharmacy india

  32. Georgebrica Avatar

    ко ланта остров в тайланде как добраться Краби Отзывы: обычно восторженные, Краби — отличное место для отдыха.

  33. JosephBab Avatar
    JosephBab

    Unm Pharm: Unm Pharm – generic drugs mexican pharmacy

  34. CraigKab Avatar
    CraigKab

    Umass India Pharm Umass India Pharm indian pharmacies safe

  35. Kennethdiera Avatar
    Kennethdiera

    Unm Pharm: Unm Pharm – best online pharmacies in mexico

  36. JosephBab Avatar
    JosephBab

    canadapharmacyonline com: Nyu Pharm – cross border pharmacy canada

  37. Michaelanoli Avatar
    Michaelanoli

    https://unmpharm.com/# buy modafinil from mexico no rx

  38. Kennethdiera Avatar
    Kennethdiera

    Umass India Pharm: indian pharmacy online – indian pharmacy

  39. Michaelanoli Avatar
    Michaelanoli

    https://nyupharm.xyz/# reputable canadian pharmacy

  40. JosephBab Avatar
    JosephBab

    top 10 online pharmacy in india: indian pharmacy online – best india pharmacy

  41. CraigKab Avatar
    CraigKab

    online canadian pharmacy reviews canadian pharmacy world reviews legitimate canadian mail order pharmacy

  42. DelmarDap Avatar
    DelmarDap

    https://umassindiapharm.com/# indian pharmacies safe

  43. Kennethdiera Avatar
    Kennethdiera

    Unm Pharm: Unm Pharm – mexico drug stores pharmacies

Leave a Reply

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