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

  1. Joshuabeivy Avatar
    Joshuabeivy

    Hi cac bac, ngu?i anh em nao c?n nha cai uy tin d? g? g?c Da Ga thi tham kh?o trang nay nhe. N?p rut 1-1: Sunwin web. Hup l?c d?y nha.

  2. Anthonykeype Avatar
    Anthonykeype

    Chào anh em, bác nào muốn tìm trang chơi xanh chín để gỡ gạc Tài Xỉu thì xem thử địa chỉ này. Uy tín luôn: Tải app Dola789. Chúc anh em may mắn.

  3. Williamhab Avatar

    починить айфон замена стекла apple watch

  4. Anthonykeype Avatar
    Anthonykeype

    Chào anh em, bác nào muốn tìm sân chơi đẳng cấp để cày cuốc Casino đừng bỏ qua con hàng này. Nạp rút 1-1: https://pacebhadrak.org.in/#. Chiến thắng nhé.

  5. Louisboype Avatar
    Louisboype

    Xin chào 500 anh em, người anh em nào cần cổng game không bị chặn để giải trí Đá Gà đừng bỏ qua chỗ này. Uy tín luôn: Tải app BJ88. Chiến thắng nhé.

  6. Louisboype Avatar
    Louisboype

    Hi các bác, người anh em nào cần nhà cái uy tín để cày cuốc Game bài thì xem thử chỗ này. Không lo lừa đảo: https://homemaker.org.in/#. Chúc các bác rực rỡ.

  7. Stephengrina Avatar
    Stephengrina

    Chào anh em, ai đang tìm chỗ nạp rút nhanh để chơi Tài Xỉu thì tham khảo chỗ này. Nạp rút 1-1: Nhà cái Dola789. Chúc anh em may mắn.

  8. Joshuabeivy Avatar
    Joshuabeivy

    Chao c? nha, ai dang tim c?ng game khong b? ch?n d? gi?i tri Tai X?u d?ng b? qua ch? nay. Dang co khuy?n mai: bj88. Chuc cac bac r?c r?.

  9. Joshuabeivy Avatar
    Joshuabeivy

    Chao anh em, ai dang tim nha cai uy tin d? cay cu?c Tai X?u d?ng b? qua d?a ch? nay. N?p rut 1-1: T?i app Dola789. Hup l?c d?y nha.

  10. Anthonykeype Avatar
    Anthonykeype

    Hi các bác, người anh em nào cần cổng game không bị chặn để cày cuốc Casino thì vào ngay trang này nhé. Nạp rút 1-1: Tải app BJ88. Húp lộc đầy nhà.

  11. Stephengrina Avatar
    Stephengrina

    Chào cả nhà, nếu anh em đang kiếm cổng game không bị chặn để cày cuốc Nổ Hũ thì tham khảo chỗ này. Không lo lừa đảo: https://gramodayalawcollege.org.in/#. Húp lộc đầy nhà.

  12. Anthonykeype Avatar
    Anthonykeype

    Chào cả nhà, ai đang tìm cổng game không bị chặn để gỡ gạc Casino đừng bỏ qua trang này nhé. Đang có khuyến mãi: sunwin. Về bờ thành công.

  13. Michaelwen Avatar

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

  14. Louisboype Avatar
    Louisboype

    Chào anh em, ai đang tìm sân chơi đẳng cấp để giải trí Game bài thì xem thử con hàng này. Đang có khuyến mãi: Nhà cái BJ88. Chúc các bác rực rỡ.

  15. Kevinhox Avatar
    Kevinhox

    Chao anh em, ngu?i anh em nao c?n san choi d?ng c?p d? cay cu?c Game bai thi xem th? ch? nay. Khong lo l?a d?o: Dola789 dang nh?p. V? b? thanh cong.

  16. Kevinhox Avatar
    Kevinhox

    Xin chao 500 anh em, bac nao mu?n tim c?ng game khong b? ch?n d? choi N? Hu d?ng b? qua trang nay nhe. N?p rut 1-1: https://pacebhadrak.org.in/#. Hup l?c d?y nha.

  17. Louisboype Avatar
    Louisboype

    Hi các bác, người anh em nào cần sân chơi đẳng cấp để gỡ gạc Casino thì xem thử địa chỉ này. Uy tín luôn: Game bài đổi thưởng. Về bờ thành công.

  18. Williamhab Avatar

    утопили iphone ремонт срочная диагностика iphone великий новгород

  19. Joshuabeivy Avatar
    Joshuabeivy

    Chao c? nha, ai dang tim san choi d?ng c?p d? choi Casino d?ng b? qua ch? nay. T?c d? ban th?: Sunwin web. Chuc anh em may m?n.

  20. Joshuabeivy Avatar
    Joshuabeivy

    Hi cac bac, bac nao mu?n tim ch? n?p rut nhanh d? choi Casino thi xem th? d?a ch? nay. T?c d? ban th?: T?i app BJ88. Hup l?c d?y nha.

  21. Anthonykeype Avatar
    Anthonykeype

    Chào cả nhà, bác nào muốn tìm nhà cái uy tín để cày cuốc Đá Gà đừng bỏ qua chỗ này. Uy tín luôn: BJ88. Húp lộc đầy nhà.

  22. Anthonykeype Avatar
    Anthonykeype

    Chào cả nhà, người anh em nào cần nhà cái uy tín để gỡ gạc Tài Xỉu thì vào ngay chỗ này. Uy tín luôn: https://pacebhadrak.org.in/#. Về bờ thành công.

  23. Stephengrina Avatar
    Stephengrina

    Chào anh em, ai đang tìm cổng game không bị chặn để giải trí Nổ Hũ thì xem thử chỗ này. Tốc độ bàn thờ: Link vào Dola789. Chúc anh em may mắn.

  24. Louisboype Avatar
    Louisboype

    Chào cả nhà, người anh em nào cần chỗ nạp rút nhanh để gỡ gạc Game bài thì tham khảo chỗ này. Không lo lừa đảo: sun win. Về bờ thành công.

  25. Stephengrina Avatar
    Stephengrina

    Chào cả nhà, ai đang tìm trang chơi xanh chín để giải trí Game bài đừng bỏ qua chỗ này. Tốc độ bàn thờ: Tải Sunwin. Chúc các bác rực rỡ.

  26. HiltonAmeme Avatar

    замена дисплея honor в великом новгороде цена ремонт смартфонов в великом новгороде

  27. Anthonyjef Avatar

    Новости России и Мира На линии соприкосновения сохраняется напряженная обстановка. Обе стороны фиксируют нарушения режима прекращения огня. Продолжаются переговоры о деэскалации конфликта и соблюдении Минских соглашений. Особое внимание уделяется обеспечению безопасности гражданского населения.

  28. Louisboype Avatar
    Louisboype

    Chào cả nhà, người anh em nào cần nhà cái uy tín để giải trí Casino đừng bỏ qua con hàng này. Uy tín luôn: bj88. Húp lộc đầy nhà.

  29. Joshuabeivy Avatar
    Joshuabeivy

    Xin chao 500 anh em, n?u anh em dang ki?m nha cai uy tin d? choi N? Hu thi tham kh?o d?a ch? nay. N?p rut 1-1: T?i app BJ88. Chuc anh em may m?n.

  30. Anthonykeype Avatar
    Anthonykeype

    Hi các bác, ai đang tìm cổng game không bị chặn để chơi Nổ Hũ thì tham khảo con hàng này. Uy tín luôn: Tải app BJ88. Về bờ thành công.

  31. Joshuabeivy Avatar
    Joshuabeivy

    Xin chao 500 anh em, bac nao mu?n tim san choi d?ng c?p d? g? g?c Tai X?u thi xem th? trang nay nhe. T?c d? ban th?: T?i app Dola789. Chi?n th?ng nhe.

  32. Anthonyjef Avatar

    Криминальная хроника Москва и Вашингтон проводят консультации по вопросам стратегической стабильности. Стороны обсуждают перспективы возобновления диалога по контролю над вооружениями и предотвращению конфликтов.

  33. Anthonykeype Avatar
    Anthonykeype

    Hi các bác, nếu anh em đang kiếm cổng game không bị chặn để chơi Casino thì xem thử chỗ này. Đang có khuyến mãi: Link tải Sunwin. Húp lộc đầy nhà.

  34. Anthonyjef Avatar

    Новости России В Санкт-Петербурге задержана группа мошенников, обманывавших пенсионеров. Злоумышленники представлялись сотрудниками социальных служб и предлагали пожилым людям оформить льготы, выманивая у них деньги. Полиция призывает граждан быть бдительными и не доверять подозрительным звонкам и предложениям.

  35. Louisboype Avatar
    Louisboype

    Hi các bác, bác nào muốn tìm trang chơi xanh chín để gỡ gạc Casino thì vào ngay địa chỉ này. Đang có khuyến mãi: https://homemaker.org.in/#. Về bờ thành công.

  36. Caseythine Avatar

    пошив штор в Москве Дизайнерские шторы — вершина мастерства. Сотрудничая с ведущими дизайнерами, мы создаем эксклюзивные коллекции: ручная вышивка, необычные текстуры, комбинации тканей. Такие шторы станут акцентом интерьера, подчеркнув ваш вкус и статус.

  37. Kevinhox Avatar
    Kevinhox

    Chao anh em, bac nao mu?n tim c?ng game khong b? ch?n d? g? g?c Da Ga thi xem th? con hang nay. N?p rut 1-1: bj88. Hup l?c d?y nha.

  38. HiltonAmeme Avatar

    замена задней камеры iphone в великом новгороде цена ремонт блока питания ноутбука великий новгород

Leave a Reply

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