PHP Dersleri, MySQL ve Açık Kaynak


« Güvenli Bir Üyelik Sistemi İçin Temel İpuçları

Eğer kullanıcıların üye olarak bilgilerini paylaştığı bir ağ tabanlı sistem geliştiriyorsanız (Session,Cookie) ve bu bilgileri bir veritabanında saklıyorsanız; bu bilgiler kullanıcı ve sunucu arasında olduğundan dolayı araya 3. bir kişinin girmesine izin vermemek için kendinizden emin olana dek tüm güvenlik risklerini gözden geçirmeniz gereklidir.

Bunun başlangıç noktası projeye başlamadan önce küçük hataları önlemektir.Burada size anlatacağım konu PHP ile olduğu için kodlama yaparken nelere dikkat etmeniz ve bazı ipuçlarını öğrenmenizdir.

Aşağıda güvenlik ipuçları olarak verdiğim bilgiler projenizi geliştirirken dikkat etmenizi kesinlikle tavsiye ettiğim yöntemlerdir.

1-  Üye ismi ve şifresini 6 karakter veya daha uzun yapın.

2-  Oturum açma hatasında kullanıcıyı bilgilendirin.
Kullanıcı sisteme giriş yaparken eğer parolayı yanlış girmişse hata mesajı gösterin.Eğer tekrar yanlış parola ile girmeye çalışıyorsa üç yanlış denemeden sonra o kullanıcı adı ile girişi bir müddet yasaklayın ve şifremi unuttum bölümüne yönlendirerek şifrenin mail adresine gelmesini, geldikten sonra değiştirilmesini önerin.

3-  İşlemlerinizin başına @ hata bastırma simgesini yerleştirin.
Birçok PHP fonksiyonunun önünde @ simgesi yer alır.Eğer yapılması istenen işlem başarısız olursa @ simgesi hatanın ekranda gösterilmesini önleyecektir.En faydalı olduğu işlemlerin başında SQL ile veritabanında bir işlem yaptığınızda hatanın gösterilmesini engeller.Bu hataların engellenmesi ile SQL hatalarından kaynaklanan güvenlik açıklarınıda engellemiş oluruz.

4-  Kullanıcı parolalarını veritabanında şifreleyerek saklayın (MD5,CRYPT,SHA-1)
Eğer biri veritabanınıza erişim sağladıysa tüm kullanıcı bilgilerini ve parolalarını görebilir.Ama parolayı bir şifreleme yöntemi ile sakladığımızda kişinin parolayı öğrenmesini engelleriz.Şifreleme Metodları yazımda bu konu hakkında detaylı bilgi alabilirsiniz.

5-  Hiçbir zaman yönetici isminizi admin,root veya yönetici şeklinde yapmayın.
Herkesin bildiği ve çok kullanılan üye isimlerini kullanmanız risklidir.

6-  Kullanıcının sisteme giriş yaptığı son zamanı ve IP adresini saklayın.
Kullanıcının giriş yaptığı son zamanı saklayın ve IP adresini kaydedin.Ayrıca kullanıcı daha sonra giriş yaptığında son giriş zamanını ve ip adresini kullanıcıyada gösterin.

7-  Herhangi bir form alanı verisinden tehlikeli SQL,PHP,HTML komutlarını ve karakterleri temizleyin.
strip_tags() , str_replace() ve stripslashes() fonksiyonları ile bu komutları engelleyebilirsiniz.

8-  HTML form alanlarınızda “maxlenght” seçeneğini kullanın.
Eğer veritabanında saklayacağınız üye ismi veya parolanın maximum uzunluğunu 8 karakter olarak belirlemek isterseniz form alanınıza “maxlenght” seçeneğini eklemeniz gereklidir.Bu sayede uzun girişleri engelleyebilirsiniz.

Örnek: <input type=”text” name=”giris” size=”8″ maxlenght=”8″>

9-  $_REQUEST yerine $_POST kullanın.

10-  Son olarakta eğer önemli ve büyük bir projeyse SSL Sertifikası kullanın.
Daha yazılması gereken birçok şey var fakat tecrübe kazandıkça herşeyi öğreneceksiniz.Şu an için temel önlemleri öğrenmeniz diğer yöntemler için bir alt yapı taşıyacaktır.




16 Yorum


  • 08 Mart 2008
    emrah serdaroğlu yazdı


    e hadi devam harika yazılarınıza… bu kadar gecikmeli olmasın lütfen 🙂 neredeyse ben bile PHP öğrenecem yazılarınız sayesinde…

  • 08 Mart 2008
    Güray Süerdem yazdı


    Zaman buldukça yazmaya çalışıyorum gecikmeleri önlemek içinde çok sıkı çalışıyorum (: neden kendinizi aşağıladınız phpyi elbette öğreneblirsiniz imkansız birşey gibi görmeyin 🙂

  • 11 Mart 2008
    emrah yazdı


    teşekkürler cevabınız için, ancak ben bile derken tasarım ile o kadar haşırneşirim ki maalesef arada bakıp birşeyler kapmaya çabalıyorum… işte anlatımlarınızın esas güzelliğide, arada bile bakılsa birşeyler anlamaya başlıyor insan 🙂 bunun için ve özverili dikkatli çalışmanız içinde teşekkürler…

  • 02 Mayıs 2008
    huseyin yazdı


    emrah arkadasimiza katiliyorum yazilariniz gercekten anlasilir ve sade ozveriniz icin tesekkur ederim

  • 19 Mayıs 2008
    ali yazdı


    selam. güzel acıklama yapmıssınız elinize emeginize saglık

  • 29 Mart 2009
    samet yazdı


    gerçekten çok güzel anlatmışsın çok teşekkür ederim.

  • 04 Haziran 2009
    kaan yazdı


    merhaba yazılarınız gerçekten bize cok güzel yol gösteriyor.. bunun için gerçekten çok teşekkürler.. Bir sorum olacak benim bu 3. maddeki @ işaretinin kullanımı nasıl oluyor? Şimdiden teşekkür ederim..

  • 28 Temmuz 2010
    akiza yazdı


    Teşekkürler hocamGüzel bi makale Ellerine SAglık

  • 30 Ağustos 2010
    paslanmaz yazdı


    teşekkürler elinize saglık

  • 23 Haziran 2011
    Metin TURAN yazdı


    Merhaba biligilerinizi paylaştığınız için teşekkür derim fakat bu yazınız da anlamadığım bir şey var , 9. maddede ;
    9- $_REQUEST yerine $_POST kullanın.
    demişsiniz aceba nedenini öğrenebilimiyiz …
    kolay gelsin…

  • 03 Ağustos 2011
    paslanmaz flanş yazdı


    Metin $_REQUEST hem getten gelen veriyi hemde posttan gelen veriyi alır. $_POST ise posttan gelen veriyi aldığı içindir.

  • 29 Nisan 2014
    çatı tamiri yazdı


    güzel bir paylaşım

  • 22 Ocak 2016
    Bandırma Web Tasarım yazdı


    Teşekkürler Bilgilendirme için..

  • 23 Ocak 2016
    Gönen Oto Kiralama yazdı


    Paylaşım için Teşekkür Ederim.

  • 27 Ocak 2016
    Balıkesir Organizasyon yazdı


    Makale için Teşekkürker.

  • 28 Ocak 2016
    Tez Hazırlama yazdı


    güzel teşekkürler

Yorumla