PHP Güvenlik Fonksiyonları

Bu yazımızda web sitenizi korumak ve formdan gelen bilgileri kontrol altında tutmak için gerekli bazı fonksiyonları derledim. Burada dikkat edeceğiniz iki nokta var. Birincisi Doğrulama Yapmak, İkincisi veriyi filtrelemek. PHP'de düzenli ifadeler kullanarak, çok kolay şekilde  forma girilen veriyi kontrol edebilirsiniz, ayrıca PHP'de veri filtrelemek için birçok hazır fonksiyon var, burada birkaçını kullanacağız. Daha  detaylı için php.net sitesine bakabilirsiniz.

//sayı dışındakileri yok eder.
$metin="123avd456dd+^-?*+'&'789";
echo preg_replace("#[^0-9]#",'', $metin);
 
//Sadece Tam Sayıları Filtereleme 
$theNumber="983928/2ddo@3233'0 or 1 '%^33)_23@''''$9123!@~#";
$theNumber=(filter_var($theNumber, FILTER_SANITIZE_NUMBER_INT));
echo $theNumber
//Temizlenen Çıktı: 983928232330133239123
 
//strip_tags fonksiyonu Html etiketlerini ayrıştırır.
$text = '<p>Test meti.</p><!-- Açıklama --> <a href="http://www.zararli_link.com">Zararlı Site</a>';
echo strip_tags($text);
echo "\n";
 
//Burada sadece <p> ve <a> taglerine izin vermek için
echo strip_tags($text, '<p><a>');
 
if ( isset( $_POST[ 'mesaj' ] ) )
$mesaj = htmlentities ( trim ( $_POST[ 'mesaj' ] ) , ENT_NOQUOTES );

//Burada htmlentities fonksiyonundan geçirilmeden önce;
<a href="http://oguzhantas.com/">Oguzhan TAS Web Sitesi</a>
 
//htmlentities fonksiyonundan geçirildikten sonra;
&lt;a href="http://oguzhantas.com/"&gt;Oguzhan TAS Web Sitesi&lt;/a&gt;

/Kullanıcının çok uzun veri girip girmediğini kontrol etmek de bir güvenlik kontrolüdür.  Örneğin veritabanında adı alanı için 50 karakter ayırdınız ve kullanıcı 60 karakter girdi, bu durumda veritabanı fazla olan 10 karakteri kesecektir. Bazen bu durum, gereksiz veri kaybı demektir.
 
if ( strlen( $_POST['aciklama'])>= 1 && strlen( $_POST['aciklama'] )<= 256)
$aciklama = htmlentities ( trim ( $_POST[ 'aciklama' ] ) , ENT_NOQUOTES );
 
//email kontrolü için yine düzenli ifadelerden yararlanıyoruz.
if ( preg_match( '/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/', $_POST[ 'eposta' ] ) )
$emailAddress = trim( $_POST[ 'eposta' ] );
 
if ((preg_match( '/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/', 'oguzhantas@gmail.com' )))
{echo 'geçerli';}

İyi çalışmalar,
Mart 2015
Bookmark and Share