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.