Nell'ambito di un sistema di autenticazione ad un sito che è online da una decina d'anni, vorrei modificare il sistema di gestione delle password. Attualmente le password sono salvate in chiaro, vorrei, invece, usare la codifica MD5.
Ho già un codice ASP che si occupa di fare le codifiche in MD5.
La mia idea è costruire un sistema dove, quando si registra un nuovo utente,
1. Creo un password casuale, che gli mando per email (ma non salvo in chiaro nel db).
2. Codifico questa password in MD5.
3. Codifico la sua username in MD5.
4. Creo una stringa di caratteri casuali (che poi salverò nel database nella colonna salt).
5. Codifico questa stringa in MD5.
6. Concateno: password, salt e username (tutti codificati in MD5) e salvo questa stringa nel campo password del db.
Quando l'utente si loggerà, inserirà nel form la username e password e da lì farò le verifiche in questo modo:
1. Recupero la stringa casuale dalla colonna salt per l'utente che si sta loggando.
2. Codifico la stringa salt in MD5.
3. Codifico in MD5 la password inserita dall'utente nel form di login e la username dell'utente.
4. Concateno queste stringhe e verifico la stringa concatenata corrisponda alla password salvata nel db in corrispondenza di questo utente.
Quando l'utente modifica la sua password procederei in questo modo:
1. Codifico la password dell'utente in MD5.
2. Codifico la sua username in MD5.
3. Creo una stringa di caratteri casuali (che poi salverò nel database nella colonna salt).
4. Codifico questa stringa in MD5.
5. Concateno: password , salt e username (tutti codificati in MD5) e salvo questa stringa nel campo password del db
E' corretto operare in questo modo?