PHP: aggiungere un hash alle password

Short link

In PHP si può aggiungere un hash ad una password con molta semplicità.

Aggiungere un hash è un modo efficace per rendere una password più sicura. Nelle versioni più recenti di PHP è stata introdotta la funzione password_hash() che non serve ad aggiungere un hash ma a trasformare l’intera password in un hash.

Un hash non è altro che una stringa che può essere aggiunta all’inizio o alla fine della password già codificata o in entrambe le posizioni.

Esempio:


define( 'PWD_SALT', 'yRUbX$2JOt7#9A?p7dDa' );

function add_hash( $password ) {
	$hashed_pwd = md5( PWD_SALT ) . md5( $password ) . md5( PWD_SALT );
	return $hashed_pwd;
}
$pwd = 'c3Zb1E/}i:NtDkeG5$mH';

$hashed = add_hash( $pwd );

Quindi per verificare la correttezza della password ad esempio al login:


$pwd = $db->escape( trim( $_POST['pwd'] ) );
$hashed_pwd = add_hash( $pwd );
$value = $db->fetchOne( "SELECT user FROM users WHERE pwd = '$hashed_pwd'" );

if( !is_null( $value ) ) {
	// Login corretto
} else {
	// Errore
}

Dal form acquisiamo la password in chiaro, quindi selezioniamo l'utente dal database usando la password codificata. Volendo si può effettuare anche una doppia verifica confrontando anche il nome utente.

L'autore

Gabriele Romanato, sviluppatore web full stack specializzato in siti, applicativi web ed e-commerce con Node.js e PHP.