SORU
17 EKİM 2009, CUMARTESİ


Nasıl benim kullanıcıların store' şifreleri güvenli bir şekilde alabilir miyim?

Ne kadar daha güvenli düz MD5 daha bu? Sadece şifre güvenliği araştırma yapmaya başladım. PHP oldukça yeniyim.

$salt = 'csdnfgksdgojnmfnb';

$password = md5($salt.$_POST['password']);
$result = mysql_query("SELECT id FROM users
                       WHERE username = '".mysql_real_escape_string($_POST['username'])."'
                       AND password = '$password'");

if (mysql_num_rows($result) < 1) {
    /* Access denied */
    echo "The username or password you entered is incorrect.";
} 
else {
    $_SESSION['id'] = mysql_result($result, 0, 'id');
    #header("Location: ./");
    echo "Hello $_SESSION[id]!";
}

CEVAP
17 EKİM 2009, CUMARTESİ


Şifre depolama düzeni güvenli almak için en kolay yolu gereğidirstandart bir kütüphane kullanarak.

Çünkü güvenlik eğilimi olmak çok daha karmaşık ve daha görünmez berbat olasılıkları daha birçok programcı olabilir mücadele tek başına kullanarak bir standart kütüphane hemen hemen her zaman en kolay ve en güvenli (tek) seçenek mevcut.

Yeni parola PHP API (5.5.0 )

Eğer PHP 5.5.0 sürümü veya daha yeni kullanıyorsanız, ya da 5.3.7 veya daha yeni kullanıyorsanız ve ircmaxell/password_compat yükleyin yeni basitleştirilmiş şifre API karma kullanabilirsiniz. Örneğin:

Karma oluşturma:

$hash = password_hash($_POST['password'], PASSWORD_DEFAULT, ['cost' => 12]);

Şifre doğrulama:

if (password_verify($_POST['password'], $hash)) {
    // Success!
}

Eski standart kütüphane

Bir göz atın: Portable PHP password hashing framework:phpassve CRYPT_BLOWFISH algoritması kullanın emin olun mümkünse.

kod kullanarak phpass örneği (v0.2):

require('PasswordHash.php');

$pwdHasher = new PasswordHash(8, FALSE);

// $hash is what you would store in your database
$hash = $pwdHasher->HashPassword( $password );

// $hash would be the $hashed stored in your database for this user
$checked = $pwdHasher->CheckPassword($password, $hash);
if ($checked) {
    echo 'password correct';
} else {
    echo 'wrong credentials';
}

PHPass bilinen projeler oldukça iyi: bazı uygulanmıştır

  • phpBB3
  • WordPress 2.5 olarak bbPress
  • Siteye 7 sürümü, (modül İpuçları için kullanılabilir 5 ve 6)
  • others

İyi olanı ayrıntıları hakkında endişelenmenize gerek yok yani, o ayrıntıları deneyimi olan kişiler tarafından programlanmış ve internet üzerinde birçok millet tarafından gözden geçirilmiştir.

Şifre saklama programları hakkında daha fazla bilgi için Jeff`s blog yazısı okuyun: You're Probably Storing Passwords Incorrectly

Ne olursa olsun, eğer alacak olursan yapKendim, teşekkür ederim . /^>' yaklaşımı . em ^strong>MD5 SHA1 artık kullanmayın. Karma algoritma çok güzel, ama kabulgüvenlik nedeniyle kırık.

Şu anda, CRYPT_BLOWFİSH crypt kullanarak en iyi uygulamadır.
PHP CRYPT_BLOWFİSH Bcrypt karma bir uygulama. Bcrypt Blowfish blok şifre pahalı anahtar algoritması yavaş Kur yararlanarak dayanmaktadır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Pepsi

    Pepsi

    1 Kasım 2005
  • whatever

    whatever

    30 EYLÜL 2005