Php İle Güvenli Parola Şifreleme

Merhabalar arkadaşlar ,php yazılımlar geliştirirken gerek admin panel ,gerek kullanıcılar için oluşturulan parolaların direkt olarak çekilmesi güvenlik problemleri oluşturabilir bizler için.Bunun için password_hash ve password_verify fonksiyonlarını kullanacağız.

Password_hash fonksiyonunda 2 adet farklı işleyiş var , PASSWORD_DEFAULT ve PASSWORD_BCRYPT.Biz bu yazımıda ilk işleyişimizi kullanacağız.

En basitinden hepimiz insanız ,ufak bir sql injection açığında tüm veritabanı aşağıda kolaylıkla indirilebilir.Bu gibi durumlarda bütün parolalar ve erişim için detaylar dışarıya aktarılabilir.

Türkiye de gördüğüm çoğu geliştirici de projeleri köklü olsa bile şifreleme kullanmıyor veya md5,sha1 gibi algoritmalar kullanıyor.Bu algoritmalar doğrudan kırılamaz olsa bile internet üzerinde hazır wordlist checker ile bazen kırılabilmektedir.

İlk etapta  gelen bi veriyi şifreleyelim.

<?php
$parola = "123456";
$sifrele = password_hash("{$parola}", PASSWORD_DEFAULT);
echo $sifrele;
?>

$parola değişkeninine şifrelenecek olan verimi girdim ,genelde kayıt sayfasında bu şekilde işlem yapılır.$parola değişkeni post ile gelen parola olur.Sayfayı her yenilediğinizde farklı hash oluşmasına aldanmayın 🙂 Bu işin doğasında var..

Oluşturulan bir hashı kopyaladım ve bir değişkene aktarıyorum, bu değişken değil de bir veritabanı da olabilir.Bunun bir önemi yok.Doğrulama için password_verify kullanıyoruz.

<?php
$parola = '123456';
$hash = '$2y$10$YfVtZ/gLwmOdl/m6mgo2n.U7wBgvSz1mgC.P2bBpVl9XCgaZJ1fsW';


if (password_verify("{$parola}",$hash)) {
	echo "Doğru";
}else {
	echo "Yanlış";
}
?>

Yukarıda gördüğünüz gibi if ile güzel bir şekilde kontrol yaptırdık ve hash’ın doğru olup olmadığını anladık.