PHP ile Değişken Temizleme
13 January 2009 TuesdayPHP, web tabanlı script dillerinin en popüleridir denilebilir. Bir geliştirme aracı veya dil’i ne kadar çok popüler ise onunla ilgili o kadar çok açık çıkma olasılığı yüksektir. Özellikle siteleri, uygulamaları ele geçirmek (Hacklemek) isteyen kişiler için internette popüler araçlar için bir çok yöntem bulunabilir. Durum böyle olunca da yazılan kodun güvenlik seviyesine çok daha fazla dikkat etmek gerekiyor. SQL Injection için formdan gelen değerlerin filtrelenmesi yani temizlenmesi olmazsa olmaz gereksinimlerden biridir.
PHP’de bir formdan gönderilen (Submit edilen) form verilerini doğrudan işlemek yerine bir kontrolden geçirmek çok daha güvenli olacaktır. Bunun için aşağıda birkaç örnek bulabilirsiniz;
$guvenli_deger = preg_replace("/\W+/i","",$_POST['deger']);
Yukarıdaki satırda POST metodu ile gönderilen deger adındaki değişkenin içeriğindeki harf dışındaki tüm karakterler temizlenmektedir.
$guvenli_deger = ctype_digit(preg_replace("/\W+/i","",$_POST['deger'])) ? preg_replace("/\W+/i","",$_POST['deger']): NULL;
Yukarıdaki örnekte ise ilk örnekten farklı olarak gelen değerin sayı olup olmadığı kontrol ediliyor. Eğer içerik temizlendikten sonra sayı dışında bir karakter içeriyorsa değişkene NULL değeri atanıyor.
$guvenli_eposta = preg_replace("/[^\wüğışöçÖÇŞİĞÜ\.\:-\s@]/i","",$_POST['mailAdresi']);
Bu son örnekte ise gelen mail adresinin içerebileceği Türkçe karakterler de dahil diğer karakterler temizlenmektedir. Böylece formdan gelen e-posta’nın güvenli olması sağlanmaktadır.