Post

데브코스 TIL - Day 32

24년 1월 2일 강의를 들은 내용과 추가로 공부한 내용을 기록한 글입니다.

비밀번호 암호화

#단방향 암호화

평문을 암호화시킬 수 있음
단, 암호화를 평문으로 변환은 할 수 없음

#양방향 암호화

평문을 암호화 시킬 수 있으며, 암호화를 평문으로 변환할 수 있음

#node.js의 내장 모듈인 crypto를 사용하여 암호화

단순 Hash를 통한 암호화는 보안에 취약하기 때문에,Salt값과 다중 Hash함수를 통해 보안성을 강화시켜준다.

1
2
3
4
5
const crypto = require("crypto");
const salt = crypto.randomBytes(32).toString("base64");
const hashPassword = crypto
  .pbkdf2Sync(password, salt, 10000, 64, "sha256")
  .toString("base64");
  • randomBytes: 매개변수로 들어오는 숫자로 randomBytes를 만들어주는 메소드
  • pbkdf2Sync: 암호화 시키는 메소드
  • sha256: 암호화하는 알고리즘

※ 주의할 내용

  • 회원가입 시 암호화된 비밀번호와 salt 값을 같이 저장해야함
  • 로그인할 때는 저장된 salt와 사용자가 입력한 password를 통해 저장된 값과 같은지 확인함

관련 블로그 글

실습 node.js 패키지 구조 정리하기 - 컨트롤러 분리

현재는 users.js에서 회원가입, 로그인 로직까지 가지고 있음

1
2
3
4
5
├── app.js
├── routes
│   ├── users.js
│   └── books.js
└── pakage.json

단점

  1. 프로젝트 규모가 커질수록 코드가 엄청 복잡해짐
  2. 가독성이 떨어짐
  3. 트러블 슈팅이 어려워짐

=> 한곳에서 모든 로직을 짜면 유지보수를 하기 어려움

로직 분리하기!

컨트롤러

프로젝트에서 매니저 역할을 하는 파일

This post is licensed under CC BY 4.0 by the author.