Nasıl PHP kullanarak bir veritabanında şifre verileri şifrelemek?

9 Cevap php

Ben PHP ve CodeIgniter Framework ile MySQL veritabanı bağlıyorum. Ben veritabanında şifreli benim şifreleri saklamak istiyorum ve bunu yapmak için en iyi yolu bilmek istiyorum.

9 Cevap

Bir üst düzey bakış itibaren -, karma şifrelemek yok. Ve sen, Bcrypt kullanabilirsiniz eğer. Here's a long article explaining why BCrypt ve neden karma.

Şifreleri şifreleyerek kötü bir fikirdir. Biri veritabanı alırsa, muhtemelen siz de şifreleri şifrelemek için kullanılan anahtarı almak için gidiyoruz.

The real solution is to hash, salt, and then store the passwords. Jeff Atwood has an awesome post on this: http://www.codinghorror.com/blog/archives/000953.html

And here is one discussing "rainbow tables," massive tables of words with their MD5 sums: http://www.codinghorror.com/blog/archives/000949.html

En iyi yolu, o bu kolay ve güvenli hem de kullanımı olduğunu phpass. PHP kurulum Blowfish yaparsa, bu Bcrypt kullanır; eğer bu olmuyorsa, bu md5 birden geçer kullanır. Her iki şekilde de, düz MD5 veya SHA1 daha güvenli.

$hasher = new PasswordHash(8, false);

// Before storing a password
$hash = $hasher->HashPassword($password);

// To check a password against a hash
if ($hasher->CheckPassword($password, $hash))
    // $password and $hash match

Ben veritabanına koymadan önce her zaman şifreleri md5sum, ve daha sonra da db karşı onları kontrol etmek için şifre giriş girişimlerini md5sum. Sadece güvenlik için, ben maç her iki sürece ben hiç geri herhangi bir satır alamadım böylece nerede kullanıcı kimliği ile yan tümcesi (username) VE md5summed şifresini kullanarak bir seçme sorgusu yapmak.

Eğer şifre şaşırtmaca bu yöntem güven düzeyi gerekiyorsa Ayrıca MySQL interanlly bu parolaları üzerine md5summing kullanır.

Bir müzakere işlevini kullanın; MD5 cezası yapacağız. Şifre tutmayın, karma saklayın. Ardından, kullanıcıların oturum girdikleri Parola karma ve veritabanındaki karma karşılaştırmak için; sağlamalarının maç varsa, onlar yasal.

Eğer karma önce Ayrıca, şifre bir tuz ekleyin. Bu sadece etki alanı adı veya app benzersiz bazı diğer veriler gibi, şifre için bir dize ekleme kadar kolay olabilir. Bu sağlamalarının karşı gökkuşağı tabloları kullanarak korsanları engeller.

Şifreleri saklamak asla. Tek yönlü bir hash kullanın ve saklayın.

hmm, ben karma, daha ne matematik yaylar dayalı birden şifreleri depolama ve doğrulama yazma anda akla

Ben gerçek bir seçim tho var, bu yüzden hiç bir parola depolama yapmak zorunda değilsiniz yerde Buradan I muhtemelen mümkün olduğunca OpenID ile gidersiniz. Bu şekilde ben uzmanlara kadar şifreler bırakabilir ve kullanıcıların zaten parti güvenilir.

Ben karma ve tuzlama katılıyorum. Ben bir site genelindeki karma toplama katılmıyorum. Aynı anda tüm şifreleri sözlük saldırılarına karşı önlemek için her kullanıcı için farklı bir tuz kullanın.