PHP’de bir parolayı hashlemek için genellikle password_hash()
işlevini kullanmaktadır.
hashlemek: karıştırıp tekrar pişirmek.
<?php $parola = "kullanıcı_parolası"; // Parolayı hashle $hashlenmis_parola = password_hash($parola, PASSWORD_DEFAULT); // Hashlenmiş parolayı görüntüle echo "Hashlenmiş Parola: " . $hashlenmis_parola; // Hashlenmiş Parola: // $2y$10$on9.yJbIVwK/FAcOIAOr3uisk5rtGS/ldFmIxa1E8FynpbkrJZDkC ?>
Bu kod parolayı hashleyecek ve PASSWORD_DEFAULT
sabitini kullanarak uygun bir hash algoritması seçecektir. password_hash()
işlevi, güvenli ve doğru bir şekilde parolayı hashlemek için PHP’nin önerilen yöntemidir.
Hashlenmiş parolayı saklamak veya bir veritabanında kullanmak istiyorsanız, bu hashlenmiş parolayı saklamanız gerekecektir. Daha sonra kullanıcıdan alınan bir parolayı bu hashlenmiş parolayla karşılaştırmak için password_verify()
işlevini kullanabilirsiniz.
password_verify()
işlevi, bir parolanın hashlenmiş bir versiyonuyla eşleşip eşleşmediğini doğrulamak için kullanılır. Bu işlev, genellikle kullanıcıların girdikleri parolaları doğrulamak için kullanılır. İşlev, verilen parolanın doğru olup olmadığını belirlemek için doğru hashlenmiş parolayı alır.
İşlevin kullanımı oldukça basittir:
<?php // Kullanıcıdan gelen parola $kullanici_parolasi = "kullanici_parolasi"; // Veritabanından alınan hashlenmiş parola (örneğin) $hashlenmis_parola = "$2y$10$Mg7/OTgRDn6eKpYRcBs9BuqCja7YzBFFgEzWCVhUB1eHbkNtSVtpm"; // Parolanın doğruluğunu kontrol et if (password_verify($kullanici_parolasi, $hashlenmis_parola)) { echo "Parola doğru!"; } else { echo "Parola yanlış!"; } ?>
Bu örnekte, password_verify()
işlevi, kullanıcı tarafından sağlanan parolayı ve veritabanından alınan hashlenmiş parolayı alır. Ardından, girilen parolanın hashlenmiş versiyonu ile veritabanındaki hashlenmiş parolanın eşleşip eşleşmediğini kontrol eder. Eşleşme varsa, parolanın doğru olduğunu belirtir.
Bu işlev, saldırılara karşı güvenli bir şekilde parola doğrulama sağlar, çünkü parolanın gerçek değerini karşılaştırmak yerine hashlenmiş versiyonlarını karşılaştırır. Bu nedenle, kullanıcı parolalarını saklarken hashlenmiş parolaları kullanmak önemlidir.
PHP’de parola hashleme için password_hash()
dışında da bazı yöntemler bulunmaktadır. Bunlar genellikle daha eski veya daha az güvenli olabilir, bu nedenle password_hash()
ve password_verify()
gibi PHP’nin sağladığı güvenli parola işlevlerini kullanmak daha iyidir. Ancak yine de bu yöntemlerden bazıları şunlardır:
- md5() ve sha1(): PHP’nin yerleşik
md5()
vesha1()
işlevleri, parolaları hashlemek için kullanılabilir. Ancak, bu yöntemler artık güvenli değildir ve saldırganlar tarafından kolayca kırılabilir. Örnek:
$hash = md5($password);
- crypt(): PHP’nin
crypt()
işlevi, UNIX sistemlerinde parolaları hashlemek için kullanılabilir. Ancak, bu yöntem de bazı zayıflıklar içerebilir ve uygun şekilde kullanılmadığında güvenlik riski oluşturabilir. Örnek:
$hash = crypt($password, $salt);
- hash(): PHP’nin
hash()
işlevi, çeşitli hash algoritmaları (MD5, SHA-1, SHA-256 vb.) kullanarak veriyi hashlemek için kullanılabilir. Ancak, parolaları hashlemek için doğrudan kullanılması tavsiye edilmez. Bunun yerine,password_hash()
işlevi tercih edilmelidir. Örnek:
$hash = hash('sha256', $password);
Bu yöntemler, güvenlik açısından önerilen password_hash()
ve password_verify()
işlevleri kadar güvenli değildir. Parola hashleme işlemlerinde password_hash()
ve password_verify()
kullanılması, daha güvenli ve saldırılara karşı daha dayanıklı bir çözüm sunar.