NEX YAZILIM

NECMETTİN ASLAN KİŞİSEL YAZILIM GELİŞTİRME DÜŞÜNCE KEŞİF PAYLAŞIM VS GÜNLÜĞÜ

PHP, 28.01.2009 - 20:01
PHP ile kullanıcı girişlerine güvenlik kontrolü
    PHP tabanlı ve kullanıcılarla etkileşimleri olan web sayfaları tasarlıyorsanız güvenlik konusunda son derece dikkatli olmalısınız. Bir web sayfasında kullanıcıdan form yoluyla aldığınız bir metni bir yerde ekrana yazdırmanız gerektiğini varsayalım. Ekrana yazdırma işleminin yapıldığı yerde print, printf, echo gibi bir PHP komutu kullanıyorsunuz. Kötü niyetli kullanıcı da bilgi girişi yapılması gereken yere bilgi değil de html, script hatta php kodları da girebilir. PHP nin print komutu da girilen metinler üzerinde herhangi bir filtreleme uygulamadan yazdıracaktır. Bu durumda kullanıcı isminin istendiği yere Mehmet yazmışsa PHP ekrana Mehmet yazacaktır. Buraya kadar sorun yok. Kullanıcı isminin istendiği yere "<font color=\"red\">mehmet</font> yazmışsa PHP nin print komutu ekrana kırmızı renkle Mehmet yazacaktır. Yani kullanıcının girdiği her html kodu, script vs. işlenecektir. Artık kötü niyetli ve işi bilen kullanıcının neler yapabileceğini tahmin edersiniz.
       Bunu engellemek için aşağıda anlatacağım basit fonksiyonla girilen metinleri kontrolden geçirerek harf ve rakamlar dışında işaretler içeren metinleri kabul etmeyebilirsiniz.
       Önce kodları verelim, açıklama sonra:

       Gördüğünüz gibi neredeyse tek satır tutacak bir fonksiyon. "ereg" komutuyla kabul metinler için kabul edilebilir karakterleri belirtiyor, bunlar dışında bir değer geldiğinde fonksiyonumuzun false döndürmesini sağlıyoruz. Aslında temel amacı string içinde string aramak olan ereg komutunun kullanımı hayal gücünüze kalmış, bu tür fonksiyonlarda kullanarak işlerinizi epeyce kolaylaştırabilirsiniz. Daha fazla bilgi için google amcaya danışabilirsiniz. (veya ingilizcenize güveniyorsanız www.php.net/ereg)
       Şimdi de bu fonksiyonu kullanarak veri sorgulayacak, hatalı girişlerde kullanıcıyı uyararak işlemi sonlandıracak fonksiyonumuzu yazalım:
       foreach ile başlayan satırla scriptimize gelen tüm değişkenlere { } içindeki işlemleri uygulayacağımızı bildiriyoruz. daha sonra da alfa_dogrula fonksiyonundan false sonucunun gelmesi halinde kullanıcıya bir mesaj verip die(); komutu ile işlemi sonlandırıyoruz.
YORUMLA
İsim - email
Başlık
Yorumunuz
YORUMLAR
Henüz yorum yapılmamış, ilk yapan sen ol!
CEO Müşteri İlişkileri
Ezgi MP3 Player
Haber Portalı
DYB İÇOM
C#
PHP
Network
PDA
Assembly
Hardware
XP & Vista
e - Kitap
Baloncuk
RSS (Canlı Başlıklar)
Ara
ÖTEKİLER
Ahmet Kaymaz
CE Turk
İç Mihrak