Hashowanie haseł w PHP
Hasła nigdy nie powinny być przechowywane w postaci jawnej ani szyfrowane odwracalnie. PHP oferuje wbudowane funkcje do bezpiecznego hashowania przy użyciu algorytmu bcrypt.
Tworzenie hasha hasła
<?php
$hasło = 'tajnehaslo123';
$hash = password_hash($hasło, PASSWORD_BCRYPT, ['cost' => 12]);
// Zapisz $hash w bazie danych
echo $hash; // $2y$12$...
?>
Weryfikacja hasła
<?php
$haslo_uzytkownika = $_POST['password'];
$hash_z_bazy = '$2y$12$...'; // pobrany z bazy
if (password_verify($haslo_uzytkownika, $hash_z_bazy)) {
echo 'Zalogowano!';
} else {
echo 'Błędne hasło';
}
?>
Aktualizacja algorytmu hashowania
if (password_needs_rehash($hash_z_bazy, PASSWORD_BCRYPT, ['cost' => 12])) {
$nowy_hash = password_hash($haslo_uzytkownika, PASSWORD_BCRYPT, ['cost' => 12]);
// Zaktualizuj hash w bazie danych
}
Nigdy: nie używaj MD5(), SHA1() ani base64_encode() do hashowania haseł — są łatwe do złamania. Zawsze używaj password_hash().