Przejdź do treści głównej
INF.03Backend & PHP

Bezpieczne haszowanie haseł (password_hash, password_verify)

Nowoczesne, jednokierunkowe algorytmy kryptograficzne wbudowane w PHP gwarantujące bezpieczne przechowywanie haseł użytkowników z automatyczną solą.

Bezpieczne haszowanie w PHP:

Współczesne standardy bezpieczeństwa bezwzględnie zakazują przechowywania haseł w postaci jawnego tekstu lub z użyciem przestarzałych funkcji md5() czy sha1().

PHP
<?php
$hasloJawne = 'MojeTajneHaslo123!';

// 1. Haszowanie nowego hasła przy rejestracji:
$hashDoBazy = password_hash($hasloJawne, PASSWORD_DEFAULT);
// Wynik (zawsze 60 znaków dla BCRYPT): $2y$10$vI8aWBnW3fID.ZQ4/zo1G.q1lR5...

// 2. Weryfikacja hasła przy logowaniu:
$wprowadzoneHaslo = 'MojeTajneHaslo123!';
if (password_verify($wprowadzoneHaslo, $hashDoBazy)) {
    echo "Hasło poprawne! Użytkownik zalogowany.";
} else {
    echo "Niepoprawny login lub hasło.";
}

Dlaczego password_hash jest bezpieczne?

  • Automatycznie generuje unikalną, silną kryptograficznie sól (salt) dla każdego hasła.
  • Zabezpiecza przed atakami słownikowymi i tablicami tęczowymi (Rainbow Tables).

Najczęstsze pułapki na egzaminie INF.03:

  • Kolumna w bazie danych przechowująca hash z password_hash musi mieć długość co najmniej VARCHAR(60) lub VARCHAR(255).

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Bezpieczne haszowanie haseł (password_hash, password_verify) lub rozpocznij trening.