Güvenli kullanım şifreleri saklamak için karma kullanma

6 Cevap php

Bir soru sormadan önce StackOverflow arama deneyin. Birçok soru zaten cevap verilmektedir. Örneğin:

Selam

Ben kimse bile veritabanında Şifremi görebilirsiniz istiyorum ..

Yani ben böyle karma işlevi kullanılır

$passowrd_hash=hash('shal',$_POST['password']);

Şimdi kolayca ben veritabanına bu password_hash değer saklayabilir. Bu şifrelenmiş biçimde gibi bir şey olacak.

Şimdi kullanıcı o bu şifreli şifreyi bilmiyorum orijinal şifremi biliyorum.

O bu orijinal şifre ile giriş deneyin Şimdi eğer .. O giriş mümkün değildir.

Deşifre edilebilir ve kullanıcı tekrar şifre güvenliğin yanı sıra giriş hem de elde edebilirsiniz Yani oturum yapmak böylece Yani herhangi bir yöntem yoktur.

Bunun nasıl?

6 Cevap

Eğer kullanıcı giriş şifresini karma ve sağlamalarının karşılaştırmak gerekir.

Veritabanında biri ile kullanıcı tarafından yayınlanmıştır şifresini karşılaştırarak önce, gönderilen şifreyi saklanan şifre olarak aynı şekilde şifrelemek.

Yapmanız gereken tek şey yazın ve ikisini karşılaştırmak şifresini şifrelemek olduğunu; veritabanında karma ve biri sadece şifreli. Eğer uyarsa sonra girilen şifre doğru olanıdır. Ben SHA1 gibi bir algoritma kullanarak varsayarak yaşıyorum.

Zaten cevap olarak, parola onlar yeniden girin ve veritabanı ne kadar karma karşılaştırmak her zaman karma gerekir.

Ayrıca karma algoritması tuz kullanarak içine bakmak gerekir. Bu soru tartışma iyi bir anlaşma var:

http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords

Bunu çözmek için ihtiyacım yok. Sen bir düz metin, onun tek yönlü bir işleve bir karma geri dönüştürmek olamaz. Yani, temelde, giriş şifresini karma ve iki karma karşılaştırmak:

E.g (pseudo code):-

if hash(password entered by user) == password stored in databse Then
    //logged in successfully
else
    //login failed
end if

Ben çok (md5 kullanmanızı öneririz) http://php.net/manual/en/function.md5.php.

Kullanıcı kayıt olduğunda, saklamak:

$password = md5($_POST['password']);

Ve ne zaman size kullanıcı günlükleri kontrol edin:

if($_POST['password_entered'] == $passwordFromDB) :
    // Log user in
else :
    // Show error to user
endif;