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

  1. Sign Up Avatar

    Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?

  2. TimothyKef Avatar
    TimothyKef

    Gençler, Grandpashabet son linki belli oldu. Giremeyenler buradan giriş yapabilir Grandpashabet Üyelik

  3. Antionewhiny Avatar
    Antionewhiny

    Grandpashabet güncel adresi arıyorsanız doğru yerdesiniz. Hızlı erişim için tıkla Resmi Site Yüksek oranlar bu sitede.

  4. Antionewhiny Avatar
    Antionewhiny

    Bahis severler selam, bu popüler site üyeleri adına kısa bir bilgilendirme paylaşıyorum. Herkesin bildiği üzere site adresini erişim kısıtlaması nedeniyle yine taşıdı. Giriş problemi yaşıyorsanız link aşağıda. Çalışan siteye erişim linki şu an burada https://casibom.mex.com/# Paylaştığım bağlantı üzerinden direkt siteye erişebilirsiniz. Ayrıca yeni üyelere verilen hoşgeldin bonusu fırsatlarını mutlaka inceleyin. Lisanslı bahis deneyimi için Casibom tercih edebilirsiniz. Tüm forum üyelerine bol kazançlar dilerim.

  5. TimothyKef Avatar
    TimothyKef

    Dostlar selam, bu popüler site oyuncuları için kısa bir bilgilendirme yapmak istiyorum. Bildiğiniz gibi bahis platformu giriş linkini BTK engeli yüzünden yine değiştirdi. Erişim hatası varsa çözüm burada. Güncel Casibom güncel giriş bağlantısı artık aşağıdadır https://casibom.mex.com/# Paylaştığım bağlantı ile doğrudan siteye erişebilirsiniz. Ayrıca kayıt olanlara verilen hoşgeldin bonusu fırsatlarını mutlaka inceleyin. Güvenilir slot deneyimi sürdürmek için Casibom doğru adres. Herkese bol kazançlar dilerim.

  6. Ricardodor Avatar
    Ricardodor

    Gencler, Grandpashabet son linki belli oldu. Adresi bulamayanlar su linkten devam edebilir https://grandpashabet.in.net/#

  7. Ricardodor Avatar
    Ricardodor

    Grandpashabet giris linki ar?yorsan?z iste burada. Sorunsuz giris yapmak icin Siteye Git Yuksek oranlar bu sitede.

  8. ThomasgUh Avatar

    где найти промокод для 1xBet Активируйте бонусом при регистрации на https://it-on.ru/bitrix/pgs/promokod_756.html и получите 32 500? + 100% к депозиту, чтобы начать игру.

  9. RonaldTer Avatar
    RonaldTer

    ко ланте ко ланта

  10. Georgebig Avatar
    Georgebig

    Herkese selam, Vay Casino oyuncular? icin k?sa bir bilgilendirme yapmak istiyorum. Bildiginiz gibi Vaycasino giris linkini yine guncelledi. Erisim sorunu yas?yorsan?z panik yapmay?n. Son siteye erisim adresi art?k burada: https://vaycasino.us.com/# Bu link uzerinden vpn kullanmadan siteye girebilirsiniz. Guvenilir bahis keyfi icin Vay Casino dogru adres. Herkese bol sans dilerim.

  11. Antionewhiny Avatar
    Antionewhiny

    Herkese selam, Casibom sitesi üyeleri adına kısa bir duyuru paylaşıyorum. Bildiğiniz gibi bahis platformu adresini erişim kısıtlaması nedeniyle sürekli değiştirdi. Siteye ulaşım problemi çekenler için doğru yerdesiniz. Çalışan Casibom güncel giriş adresi artık burada https://casibom.mex.com/# Bu link üzerinden vpn kullanmadan hesabınıza erişebilirsiniz. Ayrıca kayıt olanlara sunulan hoşgeldin bonusu fırsatlarını da kaçırmayın. Lisanslı bahis keyfi sürdürmek için Casibom tercih edebilirsiniz. Herkese bol şans dilerim.

  12. Antionewhiny Avatar
    Antionewhiny

    Dostlar selam, Casibom sitesi oyuncuları adına kısa bir duyuru yapmak istiyorum. Bildiğiniz gibi bahis platformu giriş linkini erişim kısıtlaması nedeniyle yine taşıdı. Erişim sorunu varsa doğru yerdesiniz. Resmi Casibom giriş adresi artık aşağıdadır Casibom Üyelik Bu link üzerinden doğrudan hesabınıza erişebilirsiniz. Ayrıca kayıt olanlara verilen yatırım bonusu fırsatlarını da kaçırmayın. Lisanslı slot keyfi sürdürmek için Casibom tercih edebilirsiniz. Herkese bol şans dilerim.

  13. Josephbor Avatar

    Go to our updated website — https://madguy.ru/

  14. Georgebig Avatar
    Georgebig

    Herkese merhaba, bu populer site oyuncular? ad?na k?sa bir bilgilendirme paylas?yorum. Bildiginiz gibi site giris linkini BTK engeli yuzunden tekrar degistirdi. Siteye ulas?m problemi yas?yorsan?z link asag?da. Guncel Casibom giris linki su an paylas?yorum Casibom Twitter Bu link uzerinden direkt siteye girebilirsiniz. Ayr?ca yeni uyelere sunulan freespin f?rsatlar?n? da inceleyin. Lisansl? casino keyfi icin Casibom tercih edebilirsiniz. Tum forum uyelerine bol sans dilerim.

  15. Malcomjuivy Avatar

    системы пожарной сигнализации в Москве, монтаж систем пожарной сигнализации, монтаж систем пожарной сигнализации в Москве, монтаж СПС, монтаж СПС в Москве Системы пожарной сигнализации – это обязательный элемент безопасности любого здания. Монтаж систем пожарной сигнализации, а особенно монтаж систем пожарной сигнализации в Москве, где пожарные нормы особенно строги, требует профессионального подхода. Грамотный монтаж СПС, в частности монтаж СПС в Москве, гарантирует своевременное обнаружение возгорания и минимизацию последствий.

  16. RonaldTer Avatar
    RonaldTer

    ко ланте ко ланта

  17. Ricardodor Avatar
    Ricardodor

    Herkese merhaba, Vay Casino oyuncular? ad?na onemli bir duyuru yapmak istiyorum. Bildiginiz gibi Vaycasino adresini tekrar degistirdi. Giris sorunu varsa panik yapmay?n. Yeni siteye erisim linki su an burada: https://vaycasino.us.com/# Paylast?g?m baglant? uzerinden dogrudan hesab?n?za erisebilirsiniz. Lisansl? bahis deneyimi icin Vaycasino dogru adres. Tum forum uyelerine bol kazanclar temenni ederim.

  18. TimothyKef Avatar
    TimothyKef

    Gençler, Grandpashabet son linki belli oldu. Giremeyenler şu linkten giriş yapabilir https://grandpashabet.in.net/#

  19. RonaldTer Avatar
    RonaldTer

    ко ланта ко ланта

  20. Ricardodor Avatar
    Ricardodor

    Gencler, Grandpashabet son linki belli oldu. Adresi bulamayanlar su linkten giris yapabilir https://grandpashabet.in.net/#

  21. TimothyKef Avatar
    TimothyKef

    Herkese merhaba, Casibom sitesi oyuncuları adına kısa bir paylaşım paylaşıyorum. Bildiğiniz gibi Casibom domain adresini BTK engeli yüzünden sürekli güncelledi. Siteye ulaşım sorunu çekenler için doğru yerdesiniz. Güncel Casibom giriş bağlantısı şu an paylaşıyorum Casibom Apk Paylaştığım bağlantı ile vpn kullanmadan hesabınıza bağlanabilirsiniz. Ek olarak yeni üyelere sunulan hoşgeldin bonusu kampanyalarını da inceleyin. Lisanslı slot deneyimi için Casibom tercih edebilirsiniz. Herkese bol şans dilerim.

  22. Antionewhiny Avatar
    Antionewhiny

    Grandpashabet giriş adresi arıyorsanız işte burada. Hızlı giriş yapmak için Grandpashabet Deneme bonusu burada.

  23. Antionewhiny Avatar
    Antionewhiny

    Grandpasha giriş linki arıyorsanız işte burada. Sorunsuz erişim için tıkla https://grandpashabet.in.net/# Deneme bonusu bu sitede.

Leave a Reply

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