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 thoughts on “Güvenli Bir Üyelik Sistemi İçin Temel İpuçları


  1. 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…


  2. 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 🙂


  3. 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…


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


  5. 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..


  6. 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…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir