Kullanıcı girdilerine güvenilmemeli, betiklerimizin güvenliği için
tüm girdiler filtrelenmelidir.
Örneğin kullanıcıdan yaş bilgisini isteyelim:
Kullanıcıdan beklenen girdi, sayı türünde bir değerdir.
Aşağıdaki kod bu doğrulamayı yapar.
$sonuc = preg_match("/[0-9]{1,3}/",$_POST['yas']); if($sonuc === true) echo "Girdi doğrulandı"; else echo "Girdi sayı değil";
Kullanıcının hayat hikayesini istediğimizi varsayalım, yukardaki gibi bir basit bir doğrulama yapamayız, bunun yerine php nin bize sunduğu temel filtreleme işlevlerinden yararlanabiliriz.
Html tagları sorunlara yol açabilir.
stript_tags() işlevi html etiketlerini yok eder.
$girdi = "<h1>büyük bi başlık</h1><span>span etiketi</span>"; echo strip_tags($girdi);
Yukardaki örneğin çıktısı:
büyük bi başlık span etiketi
Bazı etiketlere izin vermek istiyorsak:
$girdi = "<h1>büyük bi başlık</h1><span>span etiketi</span>"; echo strip_tags($girdi,"<span>");</span>
Yukardaki örneğin çıktısı:
büyük bi başlık <span>span etiketi</span>
htmlentities() işlevi tüm html karakterlerini html entitilerine çevirir.
$girdi = "<h1>büyük bi başlık</h1>"; echo htmlentities($girdi, ENT_QUOTES,'UTF-8');
yukarıdaki örneğin çıktısı:
<h1>büyük bi başlık<h1>