bcrypt
- 암호화: 평문을 암호문으로 바꾸는 것 ( ↔ 복호화 )
- bcrypt 는 단방향 암호화를 위해 만들어진 hash 함수. 즉, 복호화 불가능
- hash
- hash 함수의 결과물
- hash 함수: 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수
- bcrypt 는 기존 단방향 해시함수들(sha256 등)이 가지고 있는 취약점들 보완하여 탄생함
(아래 2가지 보완점이 있는데 bcrypt 는 그 중 salting 사용?)
- salting
- 비밀번호에 난수 추가해서 해시 함수에 넣음 (복잡도 증가)
- Key Stretching
- 단방향 해시값 게산 > 그 해시 값을 해시 > 다시 해시
JWT (Json Web Token)
- 인증에 필요한 정보들을 token에 담아 암호화 시켜 사용하는 토큰
- 기존 cookie, session 등을 이용한 인증에 단점이 있어 만들어짐
- 구조
- 과정
따라서, stateful 해야 하는 세션의 단점을 보완하기 위해 만들어진 JWT는 별도의 세션 저장소를 강제하지 않아 stateless 하여 확장성이 뛰어나고, signature를 통한 보안성까지 갖추고 있음
Guard
- guard 를 이용하면 controller 가 요청을 처리하기 전에 안전하지 않은 요청 차단
- 사용자 인증이나 접근 제어에 사용
- nestjs 에서는 controller 클래스에서
@UseGuards()
데코레이터 사용
ConfigService
- 개발 환경이나 운영 환경에 따라 다르게 넣어줘야 하거나, 노출되지 않아야 하는 코드 등 설정