PHP: aggiungere un salt alle password

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

PHP di Gabriele Romanato

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

Aggiungere un salt è un modo efficace per rendere una password più sicura. Un salt non è altro che una stringa che può essere aggiunta all'inizio o alla fine della password già codificata o in entrambe le posizioni.

Esempio:


// Andrebbe memorizzato in una posizione sicura    
define('PWD_SALT', 'yRUbX$2JOt7#9A?p7dDa');

function my_add_salt($password) {
    if(empty($password)) {
        return null;
    }
	return md5(PWD_SALT) . md5($password) . md5(PWD_SALT);
}

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


$pwd = $db->escapeSQL(trim($_POST['pwd']));
$salted_pwd = my_add_salt($pwd);

if(is_null($salted_pwd)) {
    // Errore
    return $salted_pwd;
}

// Meglio un COUNT(*) in produzione

$value = $db->fetchOne("SELECT username, email FROM users WHERE pwd = '$hashed_pwd'");

if(is_null($value)) {
	// 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.