• 13-08-2010, 00:56:30
    #10
    Üyeliği durduruldu
    Cookie sürekli kontrol edip doğrulanmalıdır, bunun için sistemde kullandığınız ust.php gibi bir dosyaya, her çalıştırışta kontol edilmek üzere bir şeyler ekleyebilirsiniz. Ayrıca cookie'yi atarken değerlerin başına sonuna bir şeyler ekleyebilirsiniz daha sağlıklı olacaktır.
    yani cookie atarken

    setcookie("kullanici", $kullaniciadi);
    yerine

    $kullanicicookie = "1234".$kulaniciadi."site.com-/";
    setcookie("kullanici", $kullanicicookie);
    gibi yaparsanız daha sağlıklı olur. Çoğu sistem şifreleri md5 olarak tutar zaten veritabanında, bu kullanıcı gizliliğine ve özeline saygıdan ötürü gerekli bir şeydir ve yazılımcıların buna dikkat etmesi önemlidir bence. Şifreleri veritabanına md5 olarak saklayıp o şekilde doğrulayıp, cookie atarken kullanıcı adına yaptığınız gibi karakterler ekleyebilirsiniz. Ancak bu daha çok tek kullanıcılı (admin paneli v.s. gibi) girişler için dosya üzerinden doğrulayabileceğin sistemler için uygundur. yani cookie'yi bu şekilde tanımladıktan sonra dosyaya girdiğin bir veriyle karşılaştırırsın. Yine bu baş son olayını tutmak istiyorsan şöyle bir şey yapabilirsin:

    3 adet cookie tanımlarsın, kullanıcının id nosu, başna sonuna karakter eklenmiş şekilde kullanıcı adı, başına sonuna karakterler eklenmiş şekilde md5li şifre. böylece kontrol sırasında ilgili id ile ilgili verileri çekip, karakterler eklenmiş şekilde birleştirip cookielerle karşılaştırabilirsiniz. Gerçi bu da karışık gelir.

    Sanırım onun için en iyisi, kullanıcı adı ve şifreyi tanımlayıp her sayfanın başında bir sorguyla kontrol etmek. Diyelimki kullanıcı tablonuz ve burada da 4 sütununuz var. id, nick, sifre, durum olarak. Girişte bilgilerin doğruluğunu kontrol edip cookie ile tanımladıktan sonra sayfa başlarında bu kontrol işlemi yenileyin.

    $gu = $_COOKIE['user'];
    $gs = $_COOKIE['pass'];
    
    $sor = mysql_query("SELECT id FROM uyeler WHERE nick = '$gu' and sifre = '$gs' and durum = 1");
    $kontrol=@mysql_num_rows($sor);
    böylece nick'i cookiedeki isim, şifresi cookiedeki şifre ve durumu 1 olarak aktif ise kullanıcı, doğrulanacaktır. bunun kontrolünü yaparsanız, eğer aksi bir durum varsa temizlersiniz cookieleri ve üye girişi olmadığını basarsınzı ekrana.

    if($kontrol<1){
    setcookie(user, "", time()-1);
    setcookie(pass, "", time()-1);
    echo "Üye giriş bilgileri doğrulaması hatalı. Lütfen girişi yenileyin.";
    }
    gibi...

    Umarım anlatabilmişimdir, cookieleri birbiriyle iletişimde ve bu şekilde doğrulayarak kullandığın sürece sorun olmaz sanıyorum.
  • 13-08-2010, 01:54:36
    #11
    Üyeliği durduruldu
    direk cookie ile login ediyorsanız cookiede ne tuttuğunuz önemli değildir. Güvenlik açığı demektir bu. Her login oluşunuzda bir hash oluşturup bunu da cookiede tutar aynı zmaanda veritabanında da tutarsanız hem özel bilgilerin kullanıcının kullandığı pcye ulaşmasını önler hem de gücenlik sağlamış olursunuz. cookie çalınması durumunda işe yaramaması için aynı anda farklı iplerle login olma ya da farklı sessionlarla aynı hashi kullanamama gibi kısıtlamaklar koyabilirsiniz.

    bunları en güzel ornekleyen yapılar forum sistemleri aslında MyBB ve vBulletin sistemlerini incelemeniz size daha iyi fikriler kazandırabilir.
  • 13-08-2010, 10:52:32
    #12
    teşekkurler hepinize ama su hash olayına uzagım biraz onu araştırmam gerek sanırsam daha guvenli olabilmek için ..