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

8,549 responses to “Input validation with filter functions”

  1. Edwardagide Avatar
    Edwardagide

    https://corevitalpharmacy.shop/# Generic Cialis price

  2. StevenIllug Avatar
    StevenIllug

    https://jojovip.blog/# jojobet giris

  3. TyroneLiaip Avatar

    Kraken Marketplace Официальный сайт для доступа к Kraken

    krak market

  4. CarlosFoola Avatar
    CarlosFoola

    order viagra: NovaMen Pharmacy – NovaMen Pharmacy

  5. Edwardagide Avatar
    Edwardagide
  6. StevenIllug Avatar
    StevenIllug

    jojobet güncel: jojobet

  7. CarlosFoola Avatar
    CarlosFoola

    ed medicines online: ed pills pharmacy – cheapest ed meds

  8. CarlosFoola Avatar
    CarlosFoola

    Tadalafil price: CoreVital Pharmacy – CoreVital Pharmacy

  9. StevenIllug Avatar
    StevenIllug

    jojobet casino jojobet

  10. Richardbag Avatar
    Richardbag

    jojobet güncel adres: jojobet

  11. TyroneLiaip Avatar

    Kraken Marketplace Официальный сайт для доступа к Kraken

    krab at

  12. Richardbag Avatar
    Richardbag

    jojobet güncel adres: jojobet

  13. banda_uaEl Avatar

    Если вы ищете честные игры и бонусы, заходите на банда казино зеркало — здесь собраны лучшие игровые автоматы и актуальные зеркала.
    Их схема включает манипуляции с игорными автоматами и подстроенные выигрыши для избранных клиентов.

  14. Richardbag Avatar
    Richardbag

    https://jojovip.top/# jojobet güncel

  15. Edwardagide Avatar
    Edwardagide

    http://corevitalpharmacy.com/# CoreVital Pharmacy

  16. TyroneLiaip Avatar

    Kraken Marketplace Официальный сайт для доступа к Kraken

    slon3 cc

  17. Edwardagide Avatar
    Edwardagide
  18. EarnestAbent Avatar
    EarnestAbent

    An outstanding share! I have just forwarded this onto a colleague who has been conducting a little research on this. And he actually ordered me breakfast simply because I found it for him… lol. So let me reword this…. Thanks for the meal!! But yeah, thanks for spending the time to discuss this topic here on your blog.
    топ казино на деньги

  19. StevenIllug Avatar
    StevenIllug

    jojobet güncel: jojobet

  20. Edwardagide Avatar
    Edwardagide
  21. StevenIllug Avatar
    StevenIllug

    jojobet resmi giriş jojobet

  22. Michaeledges Avatar
    Michaeledges

    https://primelinepharmacy.com/# erectile dysfunction drugs online

  23. StevenIllug Avatar
    StevenIllug

    jojobet casino jojobet

  24. TyroneLiaip Avatar

    Kraken Marketplace Официальный сайт для доступа к Kraken

    slon cc

  25. Fobertsax Avatar
    Fobertsax

    Maxim Anma is a professional mobile massage service available throughout Seoul, Gyeonggi, and Incheon. Professional therapists come directly to you to provide soothing, personalized care including Thai, aroma, and Swedish treatments. Accessible anytime with a safe post-payment system and complete privacy protection, guaranteeing a convenient and stress-free wellness experience whenever you need it.

    출장안마

  26. Andremat Avatar
    Andremat

    viagra Pharmacological Institute Pharmacological Sciences

  27. TyroneLiaip Avatar

    Kraken Marketplace Официальный сайт для доступа к Kraken

    krak market

  28. Anthonynew Avatar
    Anthonynew

    https://pharmacologicalsciences.com/cialis.html Pharmacological Sciences Research Institute

  29. Whitneycer Avatar
    Whitneycer

    ed treatments online Pharmacological Institute top rated ed pills

  30. Andremat Avatar
    Andremat

    Pharmacological Institute Pharmacological Sciences ed pills

  31. Leroyinhap Avatar

    электрокорунд купить Не ищите компромиссов, если вам нужен абразив, купить электрокорунд от проверенных поставщиков – значит инвестировать в надежность и долговечность ваших изделий

  32. WilliamTon Avatar
    WilliamTon
  33. Whitneycer Avatar
    Whitneycer

    buy ed pills Pharmacological Institute ed meds online

  34. WilliamTon Avatar
    WilliamTon

    https://primelinepharmacy.com/# buy erectile dysfunction medication

  35. Whitneycer Avatar
    Whitneycer

    cheap ed meds Pharmacological Sciences erectile dysfunction online prescription

  36. TyroneLiaip Avatar

    Kraken Marketplace Официальный сайт для доступа к Kraken

    krak market

  37. Danielbralm Avatar

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

  38. Whitneycer Avatar
    Whitneycer

    ed medicine online Pharmacological Sciences Research Institute erectile dysfunction pills online

  39. TyroneLiaip Avatar

    Kraken Marketplace Официальный сайт для доступа к Kraken

    kra at

  40. WilliamTon Avatar
    WilliamTon

    https://novamenpharmacy.com/# generic sildenafil

Leave a Reply

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