기타

쿠키 옵션

99duuk 2024. 12. 26. 11:57

쿠키 옵션: HttpOnly, Secure, SameSite


 

1. HttpOnly

  • 설명:
    • HttpOnly 옵션이 설정된 쿠키는 JavaScript로 접근할 수 없도록 설정
    • 브라우저는 이 쿠키를 서버로의 HTTP 요청에만 사용하며, 클라이언트 측 스크립트에서는 쿠키를 읽거나 수정할 수 없음
  • 주요 목적:
    • XSS(Cross-Site Scripting) 공격 방지:
      • XSS는 악성 스크립트를 통해 클라이언트의 쿠키를 탈취할 수 있는 취약점임
      • HttpOnly 쿠키는 JavaScript에서 접근할 수 없기 때문에 탈취 방지에 효과적
  • 설정 예시 (HTTP 응답 헤더):
    • Set-Cookie: sessionId=abc123; HttpOnly

2. Secure

  • 설명:
    • Secure 옵션이 설정된 쿠키는 HTTPS 프로토콜을 사용하는 경우에만 전송
    • HTTP 요청에서는 쿠키가 전송되지 않기 때문에 네트워크에서의 스니핑(가로채기) 공격을 방지할 수 있음
  • 주요 목적:
    • Man-In-The-Middle (MITM) 공격 방지:
      • HTTPS로만 전송되므로 암호화된 연결에서만 쿠키가 노출
    • 쿠키를 보호하여 민감한 데이터가 노출되는 것을 방지.
  • 주의사항:
    • 반드시 HTTPS를 사용하는 환경에서 설정해야 함. 그렇지 않으면 쿠키가 전송되지 않아 인증 문제가 발생할 수 있음
  • 설정 예시:
    • Set-Cookie: sessionId=abc123; Secure

3. SameSite

  • 설명:
    • SameSite 옵션은 쿠키가 외부 사이트에서 전송될지 여부를 결정
    • 크로스 사이트 요청(CSRF) 공격 방지를 위해 사용
    • 값은 다음 세 가지 중 하나를 가짐
      1. Strict:
        • 쿠키는 같은 사이트의 요청에서만 전송
        • 사용자가 다른 도메인에서 링크를 클릭하여 이동하는 경우에도 쿠키는 전송되지 않음
        • 보안성이 가장 높지만 UX가 제한될 수 있음
      2. Lax:
        • 쿠키는 같은 사이트 요청뿐 아니라 일부 크로스 사이트 요청(예: GET 방식의 링크 클릭, 이미지 로드 등)에도 전송
        • 보안과 UX 사이의 균형을 맞춘 옵션
      3. None:
        • 모든 요청(같은 사이트, 다른 사이트)에서 쿠키가 전송
        • 이 경우 Secure 옵션과 함께 사용해야만 쿠키가 설정(최신 브라우저 정책).
  • 주요 목적:
    • CSRF (Cross-Site Request Forgery) 방지:
      • 공격자가 사용자의 세션 쿠키를 이용해 악의적인 요청을 수행하는 것을 방지.
  • 설정 예시:
    • Set-Cookie: sessionId=abc123; SameSite=Strict

쿠키 옵션 비교

옵션 주요 역할 방지 가능한 공격 단점/주의사항

HttpOnly JavaScript 접근 금지 XSS 공격 JavaScript로 쿠키 접근 필요 시 사용 불가
Secure HTTPS에서만 쿠키 전송 MITM 공격, 스니핑 공격 HTTP 환경에서는 쿠키 전송 불가
SameSite 크로스 사이트 요청 제한 CSRF 공격 Strict 사용 시 일부 요청 차단 가능

쿠키 설정 종합 예시

Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Strict

권장 사항

  1. HttpOnly: 민감한 정보(예: 세션 ID, 인증 토큰)를 저장하는 모든 쿠키에 반드시 사용.
  2. Secure: HTTPS 환경에서 모든 쿠키에 적용.
  3. SameSite: CSRF 공격 위험이 있는 경우 Strict 또는 Lax를 설정.
  4. 쿠키의 만료 시간(Expires or Max-Age)을 명시적으로 설정하여 의도치 않은 세션 지속을 방지.
  5.  

'기타' 카테고리의 다른 글

단상 2  (0) 2025.01.07
파이썬 import kafka (six) ModuleNotFoundError 에러  (0) 2025.01.06
Materialized Path - 계층적 데이터 표현...  (0) 2024.12.10
tar와 zip의 차이  (2) 2024.12.06
시놀로지 web station - docker 연동  (0) 2024.12.02