Gennaio 13, 2025

password_needs_rehash() in PHP: Cos’è e A Cosa Serve?

Introduzione

In questo articolo, esploreremo la funzione PHP password_needs_rehash(), uno strumento fondamentale per garantire la sicurezza delle password nelle applicazioni web.

Spiegazione

La funzione password_needs_rehash() è utilizzata per determinare se una password hashata richiede di essere rihashata con un nuovo algoritmo o con opzioni diverse. Questo può essere necessario se si decide di aggiornare l’algoritmo di hashing a una versione più sicura o se si desidera aumentare il costo computazionale del processo di hashing.

La funzione accetta tre parametri:

  • $hash: La password hashata che si desidera controllare.
  • $algo: (Opzionale) L’algoritmo di hashing che si desidera utilizzare. Se non specificato, viene utilizzato l’algoritmo di default.
  • $options: (Opzionale) Un array di opzioni che specificano il costo e altri parametri dell’algoritmo di hashing.

Quando si utilizza

È consigliabile utilizzare password_needs_rehash() ogni volta che si verifica una password durante il processo di login. Questo permette di aggiornare automaticamente gli hash delle password quando viene modificato l’algoritmo di hashing o le sue opzioni, senza richiedere interventi manuali o forzare gli utenti a cambiare password.

Esempi

Di seguito sono riportati alcuni esempi pratici di utilizzo della funzione password_needs_rehash():


 12])) {
    // Nuovo hash con il nuovo costo
    $hash = password_hash('password123', PASSWORD_DEFAULT, ['cost' => 12]);
    echo "La password è stata aggiornata con un nuovo hash.";
} else {
    echo "L'hash della password è ancora valido.";
}
?>

In questo esempio, controlliamo se l’hash di una password richiede rihashing con un costo maggiore. Se necessario, creiamo un nuovo hash con il costo aggiornato.


 12])) {
        $newHash = password_hash('password123', PASSWORD_DEFAULT, ['cost' => 12]);
        echo "La password è stata aggiornata con un nuovo hash.";
        // Aggiorna il database con il nuovo hash
    } else {
        echo "Accesso consentito. L'hash della password è ancora valido.";
    }
} else {
    echo "Accesso negato. Password errata.";
}
?>

In questo caso, durante il processo di login, verifichiamo se l’hash esistente della password dell’utente deve essere aggiornato e lo facciamo automaticamente se necessario.

Conclusione

Utilizzare la funzione password_needs_rehash() è un ottimo modo per garantire che la sicurezza delle password degli utenti sia sempre allineata con le migliori pratiche correnti, rendendo il sistema più sicuro senza complicare l’esperienza utente.

Giorgio

Sono un Web Developer con oltre 20 anni di esperienza nello sviluppo di applicazioni web complesse. Specializzato in PHP, gestione di database relazionali e non relazionali, e integrazione di API, realizzo soluzioni robuste e scalabili per soddisfare esigenze aziendali e tecniche. Mi occupo di architetture server-side, ottimizzazione delle performance e automazione dei processi.