2012-05-28 8 views
8

Ich benutze die Nodejs bcrypt Bibliothek für einen besseren Passwortschutz.Nodejs Bcrypt Bibliothek

Ich bin nicht sicher, dass ich genau wissen, wie es zu benutzen, aber ich habe dies bisher:

//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 

      } 
     } 
    }); 
} 

Ich entfernte alle Fehler hier im Beispiel der Handhabung, so dass es einfacher, den Code zu lesen.

1.Dies funktioniert und ich bin in der Lage zu loggen und die Sitzung einzustellen. Aber ist das alles da? Fehle ich etwas?

2. Sieht so aus, als wäre das Salz beim Erzeugen von Hash dem Passwort vorangestellt. Muss ich das Salz nicht in db speichern?

Jede Hilfe willkommen

Antwort

6

Ja, das ist alles dort ist zu ihm! Das Salz, das Sie erzeugen, wenn Sie das Passwort ursprünglich verschlüsseln, wird verwendet, um Angriffe gegen Rainbow Table zu verhindern. Sie müssen es nicht bestehen.

+0

Großartig. Wirklich schöne Bibliothek. Und einfach zu bedienen – georgesamper

+0

Große Antwort. Dieser Beitrag hat mir auch geholfen, zu verstehen, warum du das Salz nicht behalten musst. http://stackoverflow.com/questions/277044/do-i-need-to-store-the-salt-with-bcrypt – emilebaizel

+1

Vorsicht: Wie die angenommene Antwort der Frage von @emilebaizel verweist, wird das Salz gespeichert als Teil des resultierenden Hash. Die Anzahl der verwendeten Runden ist ebenfalls Teil des Hashs, was zu einem einzelnen Hash führt, der ALLE Informationen aufweist, die der "Checker" -Code benötigt. – Darkhogg