2012-05-28 3 views
8

더 나은 암호 보호를 위해 nodejs bcrypt 라이브러리를 사용합니다.Nodejs bcrypt 라이브러리

나는 내가 그것을 사용하는 방법을 정확히 이해하고 잘 모르겠지만, 나는 지금까지이있어 : 그것보다 쉽게 ​​코드를 읽을 수 있도록

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

      } 
     } 
    }); 
} 

나는 예에서 여기에 처리하는 모든 오류를 제거했습니다.

1.이 작품과 나는 로그인하고 세션을 설정할 수 있습니다. 그러나 이것 모두가 그것에 있습니까? 내가 놓친 게 있니?

2. 해시를 생성 할 때 소금이 암호 앞에 붙습니다. 나는 소금을 DB에 저장하지 않아도됩니까?

도움이 되셨다면

답변

6

네, 이것이 전부입니다! 원래 암호를 암호화 할 때 생성하는 소금은 레인보우 테이블 공격을 막는 데 사용됩니다. 당신은 그것을 유지할 필요가 없습니다.

+0

좋습니다. 정말로 멋진 도서관. 사용하기 쉽고 – georgesamper

+0

좋은 답변입니다. 이 게시물은 또한 내가 소금을 지속 할 필요가없는 이유를 이해하는 데 도움이되었습니다. http://stackoverflow.com/questions/277044/do-i-need-to-store-the-salt-with-bcrypt – emilebaizel

+1

주의 : @emilebaizel에 의해 링크 된 질문의 대답이 수용됨에 따라 소금이 저장됩니다. 결과 해시의 일부로 사용 된 라운드 수는 해시의 일부이기도하여 "검사기"코드에 필요한 모든 정보가 포함 된 단일 해시가됩니다. – Darkhogg