오늘은 lv4 report 튜터님 리뷰 중 하나를 develop하려고 한다.
ISSUE
lv4project/Controller/usersController.js
Line 19 in 0620198
password,
비밀번호 저장시 암호화를 해보면 좋겠습니다.
암호화 모듈 중 하나인 bcrypt는 이전 팀과제에서는 했으나 내 담당은 아니었고 이번에 사용법을 알고 적용해보려고 한다.
1) bcrypt 모듈 설치
npm i bcrypt
2) 사용할 파일에 bcrypt모듈 불러오기
const bcrypt = require('bcrypt')
3) 사용할 비밀번호 암호화하는 함수쓰기
=> 클라이언트의 받아온 데이터를 가공하는 작업이기 때문에 usersService.js파일에 사용하였다.
// ... 생략
createUser = async (nickname, password) => {
const foundNick = await this.usersRepository.findNick(nickname);
if(!foundNick) {
const hashedPassword = bcrypt.hashSnyc(password, 10)
const userData = await this.userRepository.createUser(
nickname,
hashedPassword
);
return userData;
}
}
bcrypt.hashSync(password, 10)
bcrypt.hash(password, 10)
둘 다 brypt모듈의 메서드로 첫 번째 매개변수는 암호화할 대상, 두 번째 매개변수는 암호화에 사용되는 Salt로 값이 높을수록 암호화 연산이 증가하고 속도가 느려짐
Salt: 데이터, 비밀번호, 통과암호를 해시 처리하는 단방향 함수의 추가 입력으로 사용되는 랜덤데이터
4) 암호화 했으니 저장도 암호화하고, login시 매칭 할 값도 검증하기
//.. 생략
const passwordMatch = bcrypt.compareSync(password, user.dataValues.password)
검증하는 메서드는
bcrypt.compareSync()
확인한 결과
암호화된 password로 db에 잘 저장되는 것을 확인
잘봤습니다.