ASAC/정리용

[04-01] Cookie

hee-ya07 2024. 12. 20. 11:37

1. Cookie

1.1 Cookie

: 사용자의 상태를 기억하는 목적(-> 세션과 같이 사용 X시, Stateless)

: 사용자가 웹 사이트 방문 시, WS가 WB에게 저장하는 작은 데이터(텍스트 형식 저장):

: WB는 이후 같은 웹 사이트 방문 시, 자동으로 쿠키를 WS에 전송
=> WS에서 제어 + WB에 저장 및 전송


1.2 Cookie의 사용

    1. 쿠키 설정
      - WS 헤더: set-cookie로 제어
      - WB 헤더: cookie로 전송
    2. 사용 기준
      : Domain + Path === WB가 쿠키를 WS에 전송하는 기준
      - 사용 Path의 경우, / 이후로범위 특정 -> 단 / 하나만 정의 시 와일드 카드의 의미(*)
      - 사용 Domain 유의점
- subDomain 정의 X 호스트의 하위 도메인들은 모두 해당 쿠키 사용 가능 Ex) .google.com
- subDomain 정의 O 정의된 하위 도메인만 해당 쿠키 사용 가능 Ex) mail.google.com
  • 쿠키 유효 시간
    : MaxAge/Expores로 명시
    • 명시 O => Persistent Cookie(지속쿠키)
      : 유효 기간이 정해져있으므로 세션과는 상관없이 해당 유효기간까지 저장됨
    • 명시 X => Session Cookie (세션 쿠키)
      : 유효 기간이 정해지지 않고 세션에 종속됨 => 세션 종료 시, 삭제

1.3 쿠키 보안

: WB에서 JS를 통해 Cookie 탈취 가능 -> 보안에 유의

  1. HTTPOnly: 클라이언트 측에서 HTTP 통신 외에는 Cookie에 접근 불가
    -> XSS(=> js injection이라 생각하면 편함) 공격에 의한 쿠키 접근 제어
  2. Secure: HTTPS 채널을 사용하여 통신
    -> MITM 방지
  3. SameSite: WB의 주소에 표시된 도메인과 동일한 도메인에 대한 요청 시, 쿠키 전송
    -> CSRF 방지
    -> CSRF 공격 시, 크로스 사이트에 비의도적인 요청을 통해 과거에 설정된 (서드파티) 쿠키들이 전송
속성 퍼스트 파티 쿠키(Frist-party Cookie) 서드 파티 쿠키(Third-party Cookie)
도메인 Cookie Domain = Site Domain Cookie Domain ≠ Site Domain
사용 목적 사용자 경험 개선
-> 상태 저장, 개인 정보 인식용
유저 행동을 기록, 추적
-> 광고, 사용자 추적, 웹 분석 등..
허용 여부 대부분의 WB에서 기본 허용 많은 WB에서 기본적 차단

         - HTTPS를 사용해도 서드 파티 쿠키가 인증정보를 담고 있다면 "어드민 API" 호출 가능
         - HTTPS 미사용 시에는 MITM으로 외부에서 서드 파티 쿠키를 볼 수 있음
         - 크로스 사이트 요청 시, 크로스 사이트에 해당하는 쿠키라도 전송에 대해 고민 해야함

 

         * 보안 레벨 분류

         1) 보안 레벨 높음: Strict - 퍼스트 파티 쿠키 전송만 허용

         2) 보안 레벨 중간: Lax - 서드 파티 쿠키라도 특수 케이스시엔 부분 적용(최신 크롬 Default)

         3) 보안 레벨 낮음: None - 서드 파티 쿠키 모두 허용(과거 크롬 Default)


1.4 쿠키 단점

  1. WB에 저장된 쿠키
    -> 민감한 정보가 안전하지 않은 상태로 저장됨
    -> WB간 공유 불가
  2. Domain + Path가 일치하는 WB에 대해 쿠키를 모두 담아 보냄
    -> 쿠키에 다양한 정보를 담아 사용 시, 요청의 크키가 커짐(=> 불필요한 network Overhead발생)

 

 


깨알 사전

* keep-alive: 일반 헤더의 일종으로 송신자가 연결에 대한 타임아웃과 요청 최대 개수를 어떻게 정했는지 알려줌

=> 출처

 

* MITM(Man in the Middle): 중간자 공격, 요청-응답 사이에서 패킷을 탈취

* CSRF(Cross-Site-Request Forgery): 사이트 간 위조 요청-> 비의도적인 스크립트 실행에 의한 크로스 사이트 요