DB에 비밀번호를 그대로 저장하면 보안상의 문제가 있을 수 있기 때문에
Bcrypt로 암호화하여 저장하도록 한다.
https://www.npmjs.com/package/bcrypt
bcrypt
A bcrypt library for NodeJS.
www.npmjs.com
위 주소에서 사용방법을 친절히 설명해주고 있다.
Bcrypt 설치
npm install bcrypt --save
bcrypt example
bcrypt.genSalt(saltRounds, function(err, salt) {
bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
// Store hash in your password DB.
});
});
bcrypt.genSalt() 는 salt를 생성하는 함수이며 saltRounds를 인자로 받고 있다.
satlRoutds가 높을수록 높은 해싱 라운드가 수행된다.
생성된 salt는 bcrypt.hash()에 전달되어 비밀번호 암호화가 진행된다.
bcrypt 암호화
// models/User.js
const bcrypt = require('bcrypt')
const saltRounds = 10
userSchema.pre('save', function(next){ // user정보를 저장하기전에 실행
var user = this;
if(user.isModified('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 // hash 된 비밀번호로 교체
next() // 돌아감
});
});
} else {
next()
}
})
user 정보가 저장되기 전에 비밀번호를 암호화 하도록 하였다.
비밀번호가 수정됐을 때에만 bcrypt 함수가 실행되어 암호화 된다.
DB에서 확인해보면 위가 암호화를 안했을 때이고 아래가 bcrypt로 암호화 했을 때이다.
비밀번호가 암호화 된것을 확인 할 수 있다.
'Study > react' 카테고리의 다른 글
[Node js] Authentication 유저 인증 기능 (0) | 2021.10.04 |
---|---|
[Node js] JWT 를 이용한 로그인 (0) | 2021.10.04 |
[Node js] NodeMon 이용하기 (0) | 2021.09.27 |
[Node js] body-parser 및 postman을 이용한 회원가입 (0) | 2021.09.27 |
[Node js] 몽고 DB 연결하기 (0) | 2021.09.27 |