PHP: hash e password: l'implementazione retrocompatibile

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->escapeSQL( trim( $_POST['pwd'] ) );
$hashed_pwd = add_hash( $pwd );
$value = $db->fetchOne( "SELECT username, email 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 e l'email.

Torna su