NestJs/비밀번호 암호화 하기

25gStroy·2022년 1월 7일
0

Nest.js

목록 보기
3/23

bcryptjs 모듈사용

npm install bcryptjs --save

import * as bcrypt from 'bcryptjs';

bcryptjs 원리

  • 일반적으로 비밀번호를 저장할때 1234로 저장하는데 1234로 DB에 들어가면 큰일난다 보안상 이슈가 생기기때문.
  • bcryptjs는 위와같은 상황이 생기지 않기 위해서 비밀번호를 db에 insert할때 SHA256등으로 해시를 해서 이 해시값을 복호화하는 것이 아니라 사용자가 재 로그인을 할때 입력된 해시값을 DB에 있는 해시값과 비교를 하는방법이다.
    • 그렇다면 유저끼리 비밀번호가 겹치면 어떡할까?
      • 그럴때는 salt+해시값 이런식으로 저장하게 되면 salt값을 유저마다 부여를 해서 salt_1234 != salt2_1234 이렇게 유저끼리 비밀번호가 겹치더라도 다른 해시 값이 DB에 들어가게 된다.

사용예시

비밀번호 insert시에


    const salt = await bcrypt.genSalt();
    const hashedPassword = await bcrypt.hash(password, salt);
    const user = this.create({ username, password: hashedPassword });

비밀번호 select 시에

const user = await this.userRepository.findOne({ username });
    if (user && (await bcrypt.compare(password, user.password))) {
      return '로그인 성공';
    } else {
      throw new UnauthorizedException('login failed');
    }
profile
애기 개발자

0개의 댓글