Backend 4장 - hasing password
포스트
취소

Backend 4장 - hasing password

Backend

비밀번호

  • DB에 저장되는 비밀번호는 평문으로 작성되면 안 된다.
  • 암호화하여 저장해야 되는 것인데, 서버를 공격 시 평문으로 작성된 데이터를 쉽게 추출할 수 있기 때문에 비밀번호를 해싱하여 저장해야 한다.
  • bcrypt라는 라이브러리를 통해 비밀번호를 해싱(암호화) 할 수 있다.
  • 암호화된 비밀번호로 저장되지만, 서버 사이드에 비밀번호가 수신될 때는 평문으로 자동 해석된다.
1
2
3
4
5
6
7
8
9
//npm install bcrypt @types/bcrypt
import bcrypt from "bcrypt";

const singupController = (req, res, next) => {
  const { id, password } = req.body;

  let hashPassword;
  bcrypt.hash(password, salt);
};
  • 해싱할 인자를 첫 번째 인자에 작성하고, salt에는 솔팅 횟수를 의미한다.
    • 무작위로 생성한 고유한 값을 추가하는 것을 말한다.
1
2
3
4
5
6
7
8
9
10
// login
const login = async (req, res, next) => {
  const { id, password } = req.body;

  const exitingUser = await User.findOne({ id });
  // ...

  let isValidPass = false;
  isValidPass = await bcrypt.compare(password, existingUser.password);
};
  • 해싱된 비밀번호를 해석하기 위해 우리가 찾은 저장된 유저의 비밀번호와 입력된 비밀번호의 해싱값을 비교한다.
  • 불리언 값을 반환하는 프로미스를 반환한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.