본문 바로가기

boilerplate/Jhon-Ahn boilerplate backend

Bcrypt로 비밀번호 암호화 하기

저번에 postMan으로 json형식의 회원가입 정보를 서버로 보냈었다. 이때 password 같은 경우 123456으로 넣어서 보내줬는데 문제는 이것이 암호화가 하나도 안되어있다는 것이다. (앞으로 나올 코드에서 존재하는 변수이기도 한데, 이렇게 쌩으로 드러나있는 비밀번호를 myPlainPassword라고 한다.) 

보낼 때는 저렇게 보내도 DB에 저장할 땐 암호화를 한 후에 저장해서 계정 정보를 관리하는 사람도 유저의 비밀 정보를 볼 수 없도록 해줘야한다. 

 

일단 bcrypt 라이브러리를 다운받아주자. 

goorm ide가 아닌 gitpod에서 bcrypt 라이브러리 다운로드

bcrypt 사용법은 다음 링크를 이용하자.

https://www.npmjs.com/package/bcrypt

 

bcrypt

A bcrypt library for NodeJS.. Latest version: 5.1.0, last published: 3 months ago. Start using bcrypt in your project by running `npm i bcrypt`. There are 3659 other projects in the npm registry using bcrypt.

www.npmjs.com

 

사용법에 따라 bcrypt 라이브러리를 갖고오고, saltRounds 변수를 초기화해주자.

이때 saltRounds = 10이라는 의미는 비밀번호를 암호화할 때 솔트를 10자리로 만들겠다는 의미이다.

User.js

그리고 register route를 살펴보면, 

index.js

 

전에 작성했던 글에서 register route 같은 경우 req.body를 통해서 모든 유저 정보를 user 변수에 넣어줬었다. 그다음에 save를 하는데, save를 하기 전에 비밀번호를 암호화시켜줘야 한다. 이때 몽구스의 기능을 이용해야 한다. 

user 정보를 req.body를 통해 갖고오는 과정에서 밑의 과정을 거치게 된다. 

 

user.js 코드를 수정해주자.

 

그리고 postMan으로 회원가입 정보를 서버에 보내게 되면 아래와 같이 DB에 저장된다.

 

위는 암호화하기 전에 postman으로 요청해서 저장한 db내용이고 아래는 암호화 한 후이다.