오늘은 계속 강조하고 있는 '보안'에 관련된 모듈입니다.
bcrypt는 암호화를 할 수 있게 해주는 모듈이며 DB에 저장할때 정보를 그냥 저장하는 것이 암호화를 거친 후에 저장하는 것이 중요합니다.
npm i bcrypt --save
모듈을 설치해주고
const bcrypt = require('bctypt')
모듈을 불러옵니다.
const pwd = 'test1234' const encodePwd = bcrypt.hashSync(pwd, 10);
그리고 암호화를 진행하는 것이 이 코드입니다.
hashSync는 반환형이 Promise형이라서 Sync 사용을 권장드립니다.
hash할 때 숫자 10 파라미터명은 saltOrRounds입니다.
salt를 몇 번 돌릴거냐는 뜻이구요.
보통 기본 10으로 설정한다고 보시면 됩니다.
saltOrRounds가 높을 수록 암호화가 강력해지지만 속도는 현저히 느려진다는 점을 알아주셨으면 합니다.
그리고 이런 암호화된 패스워드와 원래 패스워드를 어떻게 비교할 수 있을까요??
const pwd = 'test1234' const encodePwd = bcrypt.hashSync(pwd, 10); bcrypt.compare(pwd, encodPwd, (err, same) => { // async callback })
compare 함수를 이용해서 복호화를 진행 후 원래 값과 비교해주는 함수입니다.
만약 로그인 API를 짠다고 가정한다면 bcrypt 모듈을 이용하여 비밀번호를 암호화하여 DB에 저장하고 compare를 이용하여 입력한 비밀번호가 일치하는지에 관한 코드를 짤 수 있을 것 같습니다.
오늘은 보안에 관련한 모듈을 배워봤습니다.
정말이지 배우면 배울수록 백엔드와 보안은 땔래야 땔 수 없는 관계라고 생각합니다.
보안에 민감한 개발자로 성장할 수 있도록 열심히 공부합시다.