반응형
그동안은 몽고디비에 postman으로 user를 저장할 때 db에 비밀번호가 그대로 실려 보안에 취약했었다.
따라서 이번에 bcrypt를 적용하여 비밀번호 해싱을 이용한 암호화를 통해 보안성을 높여주었다.
npm으로 bcrypt 설치
아래 코드를 터미널에 입력해주자.
npm install bcrypt --save
DB 스키마에 bcrypt 적용
아래 코드를 models 폴더의 User.js에 추가해주자.
const bcrypt=require('bcrypt');
const saltRounds=10;
saltRounds는 10을 초과해도 상관이 없으나, 수가 커질수록 해싱 소요시간이 기하급수적으로 증가한다.
다음으로 아래 코드를 userSchema 아래에 추가해주자.
userSchema.pre('save', function(next){
const user=this;
// 비밀번호를 변경(새로 입력 포함)하는 경우에
if(user.isModified('password')){
// 비밀번호 암호화(bcrypt npm에 나와있는 코드)
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();
});
});
}
});
pre는 mongoose의 middleware 기능이다.
init, save, remove 등의 메소드를 실행할 때 처리되는 미들웨어이다.
그 외에 더 많은 기능은 아래 블로그를 참고하면 될 듯하다.
https://mobicon.tistory.com/302
npm run start로 결과를 확인해보면 아래와 같이 해싱이 잘 됐음을 확인할 수 있다.
db가 털려도 비밀번호 유출 보안성에 대해 걱정을 덜을 수 있겠다.
반응형
'JS > Node.js' 카테고리의 다른 글
[NodeJS] 토큰 인식 실패 에러_Cannot read property 'x_auth' of undefined (0) | 2021.07.19 |
---|---|
[NodeJS] MongoDB를 이용한 로그인 구현 및 토큰 생성 (0) | 2021.06.21 |
[NodeJS] Postman을 이용하여 회원가입 API 테스트해보기 (0) | 2021.06.19 |
[MongoDB] 몽고디비 계정 설정과 Mongoose 설치 (0) | 2021.06.14 |
[MongoDB] 몽고디비 회원가입 및 클러스터 생성하기까지 (0) | 2021.06.11 |