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

1,867 responses to “Input validation with filter functions”

  1. StevenGroxy Avatar

    ко ланта отели ко ланта аэропорт — на острове собственного аэропорта нет, поэтому прямого рейса сюда обычно не существует. Ближайшие крупные аэропорты — Krabi International (KBV) и Trang Airport (TST). По прибытии можно взять такси или мини-автобус к пирсу Saladan и доплыть паромом до назначения. В сезон чартеры и частные лодки иногда предлагают прямые трансферы, но чаще всего маршрут складывается из перелёта на материк и переправы на Ко Ланту. Планируйте путешествие с учётом времени на дорогу и погодные условия, особенно если вы летите в высокий сезон.

  2. Elvinavaib Avatar

    Официальный сайт букмекерской компании : https://tako-text.ru/

  3. StevenGroxy Avatar

    пхукет ко ланта как добраться Ко Ланта пляжи — главный акцент для отдыхающих: здесь встречаются просторные длинные песчаные линии и укромные бухточки с прозрачной водой. Long Beach (Pra Ae) тянется вдоль длинной береговой линии и идеально подходит для прогулок и ужинов у моря, Klong Dao Beach радует спокойной лагуной и пологим входом, что нравится семьям с малышами, а Kantiang Bay окружён зеленью и скалами, создавая романтичную обстановку для вечеров. В окрестностях встречаются quieter участки, например Ba Kantiang Beach и пляжи у маяка, где можно насладиться моментами тишины и дайвинга в небольших точках. Важно помнить: часть пляжей лучше рано утром или за полдень — тогда вода наиболее чистая и безмятежная, а к вечеру уровень волн может возрастать, превращая побережье в красочное полотно закатов.

  4. SteveMar Avatar
    SteveMar

    north canadian pharmacy https://viagranewark.xyz/# ViagraNewark

  5. DanielLox Avatar

    Ed Pills Afib: ed drugs online – EdPillsAfib

  6. Williamopete Avatar
    Williamopete

    buy Viagra over the counter ViagraNewark Cheap generic Viagra

  7. StevenGroxy Avatar

    погода ко ланта Мой итог: Ко Ланта — отличный выбор для спокойного, расслабляющего островного отдыха с богатой природой, вкусной тайской кухней и разумными ценами. Здесь можно сочетать плавание, прогулки по джунглям и побережью, закаты и дегустацию морепродуктов. Остров не переполнен толпами, и вы легко найдёте стиль отдыха под свой темп. Если хотите полностью отключиться от городской суеты — обязательно посетите Ко Ланту и дайте себе время просто быть в гармонии с морем

  8. StevenGroxy Avatar

    ко ланта что посмотреть Остров Ко Ланта в Тайланде — настоящий тропический уголок в Андаманском море, который часто выбирают за спокойствие и разнообразие природы. Здесь переплетены два главных острова — Ко Ланта Йай и Ко Ланта Ной, соединённых мостом и рядом паромных переправ; добраться можно не только по морю, но и через материк, что делает маршрут гибким и удобным. Климат здесь во многом определяет настроение отдыха: сухой сезон с ноября по апрель дарит ясное небо и тёплое море, влажный сезон с мая по октябрь приносит короткие ливни и ветры, но всё ещё остаётся теплом вода и зелёные джунгли. Ко Ланта славится расслабленной атмосферой, уютными пляжами и маленькими бухтами, где можно потеряться от суеты больших курортов. Остров активно сохраняет природное равновесие: здесь много тропических растений, мангровые рты и заповедные участки, которые гармонично дополняют комфортные виллы и семейные гостевые дома.

  9. JamesHow Avatar

    ViagraNewark: Generic Viagra online – ViagraNewark

  10. StevenGroxy Avatar

    ко ланта на карте ко ланта аэропорт — На Ко Ланте собственного аэропорта нет. Практически все гости прибывают через Krabi International (KBV) или Phuket International (HKT). По прибытии путешественники едут на материк и далее на паром через Ban Saladan на Ko Lanta Yai. В редких случаях доступен внутренний воздушной чартер на небольшие аэродромы, но такие варианты требуют согласований и обычно относятся к эксклюзивным сервисам. Эта структура делает путешествие немного длиннее, но добавляет маршруту атмосферу приключения и плавное погружение в природу острова.

  11. DanielLox Avatar

    cheapest ed meds: Ed Pills Afib – EdPillsAfib

  12. StevenGroxy Avatar

    пляжи ко ланты Пляжи Ко Ланты — в разных участках острова можно сочетать пляжный релакс с активностями: романтические вечера у Ba Kan Tiang и Kantiang Bay, активный отдых и семейные дни на Long Beach и Klong Dao, сноркелинг и лодочные экскурсии у южных берегов к коралловым рифам. Старый город и восточное побережье предлагают не только пляжи, но и культурный опыт: рынки, кафе на набережной и возможность познакомиться с местной кухней. Инфраструктура умеренная, поэтому стоит планировать передвижения и аренду транспорта заранее — это экономит время и обеспечивает большую гибкость. Не забывайте сезонность: зима часто благоприятна для плавания и спокойной погоды, лето приносит тёплую воду, но и риск дождей.

  13. Williamopete Avatar
    Williamopete

    ViagraNewark ViagraNewark Viagra Newark

  14. SteveMar Avatar
    SteveMar

    trusted online pharmacy http://corpharmacy.com/# reddit canadian pharmacy

Leave a Reply

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