2012-05-28 14 views
8

Utilizo la biblioteca nodejs bcrypt para una mejor protección con contraseña.Biblioteca Nodejs bcrypt

No estoy seguro de entender exactamente cómo usarlo, pero tengo esto hasta ahora:

//A module containing this login function: 

login: function(credentials,req,res) { 

    //"credentials" is containing email and password from login form 

    var query = 'SELECT password, email FROM users WHERE email = ? LIMIT 1'; 

    client.query(query,[credentials.email], function(err, results) { 

     if (results[0]) { 

      //Compare passwords 
     if (bcrypt.compareSync(credentials.password, results[0].password)) { 

       //Set session data and redirect to restricted area 

      } 
     } 
    }); 
} 

me han quitado todos los gastos de envío aquí en el ejemplo de error de manera que es más fácil de leer el código.

1.Esto funciona y puedo iniciar sesión y configurar la sesión. ¿Pero esto es todo lo que hay que hacer? ¿Me estoy perdiendo de algo?

2. Parece que la sal está precedida de la contraseña al generar el hash. ¿No tengo que guardar la sal en db?

Cualquier ayuda apreciado

Respuesta

6

Sí, esto es todo lo que hay que hacer! La sal que generas al encriptar la contraseña originalmente se usa para prevenir ataques de tabla rainbow; no necesitas persistir.

+0

Genial. Muy buena biblioteca. Y fácil de usar – georgesamper

+0

Gran respuesta. Esta publicación también me ayudó a entender por qué no necesitas persistir con la sal. http://stackoverflow.com/questions/277044/do-i-need-to-store-the-salt-with-bcrypt – emilebaizel

+1

Cuidado: como señala la respuesta aceptada de la pregunta vinculada por @emilebaizel, la sal se almacena como parte del hash resultante. El número de rondas utilizadas también forma parte del hash, lo que da como resultado un solo hash que tiene TODA la información que necesita el código "checker". – Darkhogg