
GUIDE PER ASPIRANTI PROGRAMMATORI
Hash delle password
In qualsiasi progetto, la protezione solida delle credenziali degli utenti è una priorità assoluta. Il nostro progetto affronta questa esigenza implementando l’hash delle password. Questo significa che le password non vengono mai salvate in chiaro nel database: al momento della registrazione, la password viene trasformata in una stringa crittografata grazie alla funzione password_hash(). $password…


Vuoi avviare una nuova carriera o fare un upgrade?
Trova il corso Digital & Tech più adatto a te nel nostro catalogo!
In qualsiasi progetto, la protezione solida delle credenziali degli utenti è una priorità assoluta. Il nostro progetto affronta questa esigenza implementando l’hash delle password. Questo significa che le password non vengono mai salvate in chiaro nel database: al momento della registrazione, la password viene trasformata in una stringa crittografata grazie alla funzione password_hash().
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
L’hash è unidirezionale: una volta generato, non può essere decifrato o convertito nella password originale, ma solo confrontato con un altro hash per verificarne la corrispondenza. Questa caratteristica rende l’hash ideale per la protezione delle password, perché anche se un database venisse compromesso, le credenziali non risulterebbero leggibili o utilizzabili.
Come funziona?
Nel flusso di autenticazione, il sistema non confronta le password in chiaro, bensì controlla che l’hash della password inserita coincida con quello memorizzato. Questo confronto avviene grazie alla funzione password_verify(), che incapsula le migliori pratiche crittografiche disponibili e gestisce anche eventuali differenze dovute all’evoluzione degli algoritmi di hashing. Inoltre, questa funzione è in grado di riconoscere automaticamente il tipo di algoritmo utilizzato (grazie al prefisso incorporato nell’hash stesso), rendendo il codice più flessibile e a prova di futuro.
Utilizzare password_verify() in questo modo significa aderire agli standard più moderni e sicuri per la gestione delle credenziali, evitando metodi obsoleti come md5() o sha1(), che sono stati resi inefficaci dagli sviluppi delle tecniche di attacco. È importante sottolineare che questo meccanismo, pur semplice da implementare, costituisce una delle principali difese contro la compromissione degli account utente.
if ($user && password_verify($password, $user['password'])) { // login riuscito }
Questo approccio è oggi uno standard di sicurezza. Funzioni come md5() o sha1() non sono più considerate sicure per questo scopo, perché vulnerabili agli attacchi con dizionario o rainbow table. PASSWORD_DEFAULT invece garantisce l’uso automatico dell’algoritmo migliore disponibile.
È possibile, in progetti avanzati, combinare questa strategia con salting manuale, controllo di forza della password, e rehashing periodico.
CONTENUTI GRATUITI IN EVIDENZA
Guide per aspiranti programmatori 👨🏻🚀
Vuoi muovere i primi passi nel Digital e Tech? Abbiamo preparato alcune guide per aiutarti a orientarti negli ambiti più richiesti oggi.