본문 바로가기

백엔드/MongoDB

DataBase (8) - User db, Join 기능 만들기 (hashing)

전체적인 흐름 (video 생성과 동일)

1) router 생성하여 페이지 개설 : rootRouter.router("join").get(getJoin).post(postJoin);
2) user Schema 생성 : "unique:true" 활용하여 이메일, username 체크! (동일한 값으로 가입 x)
3) controller getJoin postJoin 생성 : 가입완료 후 로그인 페이지로 이동 (*req.body, *async-await)
4) join.pug (html 생성)

아이디 생성 후 확인하면 비밀번호가 노출된채 나온다. 보안상의 이유로 db에 비밀번호가 노출되면 안된다. 그래서 추가적인 password hashing이 필요하다.

 

Hashing 해싱

단방향 함수로 어떤 입력값을 이상한 문자열 형태로 변환시킨다. 활용하여 DB에 비밀번호를 저장하지 않고 해싱된 비밀번호를 저장한다. 입력값을 문자열 형태로 만들 수 있지만 문자열 형태(output)로 입력값(input)을 알수는 없다. 같은 입력값으로는 항상 같은 해시값이 나온다.*컴퓨터과학에서 결정적 함수라고 불린다.  

 

Hashing 해싱 테스트

 

SHA256 Online

 

emn178.github.io

비밀번호 암호화에 도움을 주는 (암호를 해시 해주는) 라이브러리 bcrypt 설치한다. npm i bcrypt

콜백함수, promises, async-awati 함수로 사용이 가능하다.

 

 

myplaintextPasswrd: 유저가 입력한 비밀번호

saltRounds : 해싱을 몇번 할 건지 적는 값 ('5' 입력하면 5번 해싱된 상태로 결과값 출력)

 

유저가 join에서 항목 입력 후 생성하기전에 해싱을 해야된다. 그래서 중간에 가로채져 해싱을해야 한다. (pre 사용)

여기서 this는 create 되는 User를 가르킨다.

 

반응형