🔑 Password Hash in PHP

Quando si gestiscono utenti e login, una regola fondamentale è:

NON salvare mai le password in chiaro nel database

La soluzione è usare il password hashing.


🧠 Cos’è l’Hashing

L’hashing è un processo che trasforma una password in una stringa cifrata.

👉 La password originale non è più leggibile
👉 Non è possibile tornare indietro (irreversibile)


📌 Esempio

Password inserita:

123456

Password salvata:

$2y$10$e0NR...

👉 Anche se qualcuno accede al database, non vede la password reale 🔒


🔐 Funzione password_hash()

Per creare un hash sicuro si usa:

password_hash()

📌 Esempio

<?php

$password = "123456";
$hash = password_hash($password, PASSWORD_DEFAULT);
echo $hash;
?>

👉 Ogni volta verrà generato un hash diverso (più sicuro 👍)


📥 Verificare la Password

Per controllare se una password è corretta si usa:

password_verify()

📌 Esempio

<?php

$password = "123456";
$hash = password_hash($password, PASSWORD_DEFAULT);

if(password_verify("123456", $hash)){
    echo "Password corretta ✅";
}else{
    echo "Password errata ❌";
}
?>

⚠ Errore comune

❌ NON fare mai questo:

if($password == $hash)

👉 Non funzionerà mai, perché l’hash è diverso dalla password!


🧠 Come funziona nella pratica

Registrazione utente

<?php

$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);
// salva $hash nel database
?>

Login utente

<?php

$password = $_POST["password"];
$hash_salvato = "hash preso dal database";

if(password_verify($password, $hash_salvato)){
    echo "Accesso consentito ✅";
}else{
    echo "Password errata ❌";
}
?>

🔒 Perché è sicuro


🛡️ Consigli utili


🎯 Riassunto


📚 Conclusione

Gestire correttamente le password è uno degli aspetti più importanti della sicurezza in PHP.

👉 Con password_hash() e password_verify() hai già un sistema sicuro e moderno 👍


🎉 Con questo articolo il tuo tutorial fa davvero un salto di qualità!