Sto codificando la sicurezza per un sito web nel database express.js e postgresql. Ora ho letto di salatura e hashing e ho impostato il codice con pbkdf2 usando il modulo crypto, ma il mio problema è come strutturerò la tabella degli account nel database.
Devo creare un ruolo di login che avrà un formato crittografato MD5 per la password, che sarà la chiave derivata dalla "procedura" salt e hash? Sarebbe eccessivo?
Ci sarà una tabella che sarà la seguente: UID (l'ID dal ruolo di login), SALT, HASH e anche il ruolo di login.
Quindi, durante una prova per l'autenticazione, il codice proverà ad accedere come tale ruolo, prima ottenendo l'UID assosiato, generando la password salt e hash per la password fornita e auth su un livello DB.
Spero di avere un senso.
var usrSalt = crypto.randomBytes('128').toString('base64');
//text , salt ,iterations , keylen , callback
crypto.pbkdf2(usr, usrSalt, 10000, 512, function (err, derivedKey) {
if (err) { console.log(err); }
else {
usr = derivedKey;
next();
}
});
P.S. Un modulo pgcrypto sarebbe di nuovo migliore nello stesso scenario, semplicemente rimuovendo il codice su node.js.