쿠키와 보안(가벼운 학습 정리)
문제 정의 및 찾아보기
https://nsinc.tistory.com/121
- Cookie는 왜 보안에 취약한가?
- 크로스 사이트 스크립트
-
클라이언트 브라우저에 js를 삽입해서 실행하는 공격
-
document.cookie와 같은 방법으로 해커의 사이트에 쿠키를 빼돌릴 수 있다.
-
그러면 쿠키를 빼돌리지 못하게 만든다면? 브라우저에서 쿠키에 접근하지 못한다면?
⇒ HttpOnly 쿠키가 이런 역할을 할 수 있다.
-
HttpOnly 옵션을 추가해서 document.cookie
를 완전 차단한다.
-
네트워크 요청 시에만 자동으로 쿠키를 포함해서 전송한다.
- 그러면 네트워크 자체에서 쿠키를 가로챈다면 어떻게 될까? WIFI 망에서 직접 패킷을 가로채는 방법 등이 있을 것 같다.
- HTTPS 프로토콜을 사용해서 암호화하는 방법
- https:// 라는 prefix를 까먹어도 secure 옵션을 쿠키에 적용시키면 HTTPS 통신이 아닌 경우, 쿠키를 전송하지 않는다.
- 그러면 HttpOnly를 nest 환경에서 어떻게 적용할 것인가?
- Secure Cookie를 nest 환경에서 어떻게 적용할 수 있을까?
Cookie 옵션에 대한 이해
https://jake-seo-dev.tistory.com/377
export const cookieConfig = {
production: {
httpOnly: true,
secure: true,
sameSite: 'strict',
path: '/',
},
development: {
httpOnly: true,
secure: false,
sameSite: 'lax',
path: '/',
},
};
- path
- 특정 경로에만 쿠키를 적용하고 싶을 때 사용한다.
/
로 주면 root 하위의 모든 경로에 적용되므로 모든 경로라는 의미
- samesite
- 도메인이 다른 사이트와 통신할 때 쿠키를 적용할 수 있을지 설정한다.
- strict → 같은 주소의 요청에만 쿠키를 보낸다.
- lax → 안전한 HTTP 메서드 (GET) 정도만 예외를 두고 strict와 동일하게 처리된다.
- secure
- Https가 아닌 경우 쿠키를 전송하지 않는다.
쿠키를 Nest에 적용해보자
https://velog.io/@ldhbenecia/NestJS-Cookie를-활용한-인증・인가-처리
https://suloth.tistory.com/22