티스토리 뷰

데이터베이스에 비밀번호가 그대로 저장되면 해커가 그냥 호다닥 가져갈 수도 있으니까

비밀번호를 암호화시킬 방법을 찾고 있었습니다.

 

 

그때 나타난 bcrypt

 

bcrypt는 어떤 데이터를 hash로 포장해서 만들어주는 모듈입니다.

좀 더 다양한 설명은 아래 공식 홈페이지에서 찾아보시기 바랍니다.

www.npmjs.com/package/bcrypt

 

bcrypt

A bcrypt library for NodeJS.

www.npmjs.com

 

설치방법

npm install --save bcrypt-nodejs

 


구현

 

다른 파일들은 건드릴 필요없이 post역할을 하는 파일인 home.ctrl.js파일만 건드려줬습니다.

 

먼저 require로 모듈을 가져온 후

회원가입 기능에 bcrypt기능을 넣어주면 됩니다.

 

회원가입 기능에 넣은 모습

 

여기서 genSalt란 자동으로 hash값을 랜덤으로 바꿔주는 함수입니다.

 

Salt는 말그대로 소금🧂 으로  해커들이 찾기 어렵게 소금친다라고 이해하면 쉬울 것 같습니다.

 

vscode에서 그 함수에 마우스 커서를 대면 아래 사진처럼 그 함수를 어떻게 사용해야되는지 나옵니다.

그것을 보면 파라미터로 데이터를 처리할 라운드 수와 콜백함수를 받는 것을 볼 수 있습니다.

 

 

저는 콜백함수로 에러와 결과값을 받아와 data.password를 hash값으로 바꿔주었습니다.

 

그런데도 데이터베이스에 hash값이 아닌 원래 비밀번호가 나왔습니다.

 

답은 query에 들어갈 데이터인 params에... data.password가 아니라 hash값으로 바꾼 값인 hash를 넣어줘야 했었습니다. 😫

 

그런데도 에러...... 에러 메시지를 보니까 데이터가 너무 길어서 안들어가고 있다는 것을 알게 되었고

 

hash값은 비밀번호보다 더 길기 때문에 데이터베이스의 데이터 길이를 높여주어야 된다는 것을 알게 되었습니다. 그래서 저같은 경우는 varchar(100)으로 해주었습니다.

 

 

 

해쉬값으로 잘 바뀐 비밀번호를 볼 수 있습니다.

 

반응형
Comments