Estoy codificando la seguridad de un sitio web en la base de datos express.js y postgresql. Ahora he estado leyendo sobre salting y hash y tengo el código configurado con pbkdf2 usando el módulo criptográfico, pero mi problema es cómo estructuraré la tabla de cuentas en la base de datos.
¿Debo crear un rol de inicio de sesión que tenga un formato MD5 encriptado para la contraseña, que será la clave derivada del "procedimiento" de sal y hash? ¿Sería eso una exageración?
Habrá una tabla que será la siguiente: UID (la ID del rol de inicio de sesión), SALT, HASH y también el rol de inicio de sesión.
Entonces, en un intento de autenticación, el código intentará iniciar sesión como ese rol, primero obteniendo el UID asociado, generando la contraseña salt y hash para la contraseña proporcionada y la autenticación en un nivel de base de datos.
Espero que tenga sentido.
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. ¿Sería mejor un módulo pgcrypto en el mismo escenario, simplemente eliminando el código en node.js.