회원가입 비밀번호 암호화 전
회원가입 비밀번호 암호화 형태
회원정보 저장 시 비밀번호 암호화
- Bcrypt
- 현재 가장 강력한 해시 메커니즘 중 하나
- blowfish암호화에 기반을 두고 있다.
- 보안에 집착하기로 유명한 OpenBSD에서 사용하고 있다.
- 반복횟수를 늘려 연산속도를 늦출 수 있어 연산 능력이 증가하더라도 brute-forece공격에 대비
- Bcrypt download
- npm install bcrypt --save
- Bcrypt 참고문서
- 구현 순서
- User정보를 저장(save)하기 전 비밀번호 암호화
- Salt생성 후 Salt를 이용해서 비밀번호 암호화
- 암호화가 끝난 후 User 정보(save) 저장 진행 => next( )
- 구현
-
// Usage
const bcrypt = require("bcrypt");
const saltRounds = 10;
bcrypt.genSalt(saltRounds, function(err, salt) {
bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
// myPlaintextPassword : 실제(순수) 비밀번호
// Store hash in yout password DB
});
});
-
// Project
userShema.pre("save", function(next) {
var user = this;
if(user.isModified("password")) { // password가 수정될 때만
bcrypt.genSalt(saltRounds, function(err, salt) {
if(err) return next(err);
bcrypt.hash(user.password, salt, function(err, hash) {
if(err) return next(err);
user.password = hash;
next(); // 암호화 끝난 후 정보 저장 ("save")
});
});
} else { // pasword가 수정되지 않았다면 암호화처리 pass
next();
}
});