저번에 POSTMAN으로 회원가입을 해 데이터베이스에 올려 저장된 것을 보면, 비밀번호가 그대로 노출되어 있는 것을 알 수 있음.
이는 안전하지 않은 상태이며, Bcrypt를 이용해 비밀번호를 암호화 해 데이터베이스에 저장해 보려한다.
npm install bcrypt --save
User.js
const bcrypt=require('bcrypt');
const saltRounds=10; //10자리 솔트
//user 스키마 생성 부분 생략
//유저 정보 저장 전에 암호화
userSchema.pre('save',function(next){
//userSchema 객체
var user=this;
//다른 유저 정보가 아닌 패스워드 변경시에만 암호화 시키도록 함
if(user.isModified('password')){
//비밀번호 암호화
//솔트 생성
bcrypt.genSalt(saltRounds,function(err,salt){
//에러 발생 시, index.js에 있는 save 메서드 내부 수행
if(err) return next(err);
//솔트를 이용해 해시값 생성
bcrypt.hash(user.password,salt,function(err,hash){
if(err) return next(err);
//유저 비밀번호에 암호화 된(해싱) 값 할당
uesr.password=hash;
//index.js에 있는 save 메서드 내부 수행
next();
});
});
}
//패스워드가 아닌 다른 정보를 변경시에는
else{
//index.js에 있는 save 메서드 내부 수행으로 넘어감
next();
}
});
//이하 생략
암호화 된 값이 데이터베이스에 저장되었음을 알 수 있음
www.inflearn.com/course/따라하며-배우는-노드-리액트-기본