따로 비밀번호를 암호화하지 않으면 비밀번호는 데이터베이스에 아무런 보안성 없이 노출된다.
이렇게 plaintext로 저장되어있는 데이터베이스는 보안성이 매우 취약하다.
데이터베이스에 비밀번호를 안전하게 저장하기 위해서 암호화가 필수적이다.
Bcrypt 라이브러리를 이용하면 이런 데이터의 암호화를 훨씬 간편하게 진행할 수 있다.
현시점 비밀번호 저장의 끝판왕은 Argon2id라고 한다. 보안에 좀 더 민감한 곳이라면 scrypt를 사용
Bcrypt는 Blowfish를 기반으로 만들어진 "단방향 암호화 해싱함수"이다.
Rainbow table 공격을 막기 위해서 salt를 사용하며, 암호검사 요청이 반복될 수록 cost를 늘림으로써, 무차별 대입 공격(brute-force search)을 막을 수 있다.
cost는 반복횟수로 2^n 이다.
// 터미널에 bcrypt 다운로드 명령어 입력
npm install bcrypt --save
✔️ 비밀번호 암호화는 register route에서 save메서드가 실행되기전에 진행되어야한다.
✔️ User 정보가 저장되어있는 곳에서 공식문서 Usage를 참조하여 암호화를 진행해준다.
✔️ 이렇게 코드를 작성한 후, Postman으로 테스트 아이디와 비밀번호를 데이터베이스로 보내면
암호화가 되어 저장된 비밀번호를 확인 할 수 있다.
출처:
1) https://jusths.tistory.com/158
2) https://pjh3749.tistory.com/258
3) https://www.joinc.co.kr/w/man/12/bcrypt