데브코스 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
단점
- 프로젝트 규모가 커질수록 코드가 엄청 복잡해짐
- 가독성이 떨어짐
- 트러블 슈팅이 어려워짐
=> 한곳에서 모든 로직을 짜면 유지보수를 하기 어려움
로직 분리하기!
컨트롤러
프로젝트에서 매니저 역할을 하는 파일
This post is licensed under CC BY 4.0 by the author.