개발하다가 민감한 정보들이 있었다. 비밀번호, 주민등록번호 등이 있다. 이것을 DB에 그대로 저장하게 되면 보안상에 문제가 생길 거라 생각했다.
그래서 Bcrypt라는 암호화 모듈을 이용하여 DB에 해시값을 저장하게 하였다.
[NODE] 📚 bcrypt 모듈 암호화 원리 & 사용법
위에 블로그를 참고하여 개발하였다.
외부 모듈이기 때문에 npm을 통해 Bcrpyt를 설치한다.
패스워드, 주민등록번호는 해시값을 통해 저장한다.
Bcrpyt는 양방향이 아닌 단방향이기 때문에 복호화할 수가 없다고 한다. 즉 비교할 때에는 복호화하여 원본값을 비교하는 것이 아닌 해쉬값으로 비교해야한다는 의미이다.
userID값으로 select하여 나온 데이터들의 userPassword를 비교한다. 이 때 compareSync함수를 통해 동기적으로 입력한 password를 해시값으로 바꾼 후 비교한다.
민감한 정보는 해시값으로 저장되는 것을 볼 수 있다.