CS

쿠키

baek-dev 2025. 5. 10. 19:27

쿠키(Cookie)란? – 웹 브라우저의 상태 관리 기술 정리

쿠키(Cookie)웹 서버가 클라이언트(브라우저)에 저장시키는 작은 데이터 조각임.
주로 사용자 인증 상태 유지, 세션 식별, 사용자 설정 저장 등에 사용되며,
HTTP가 기본적으로 상태를 유지하지 않는(stateless) 특성을 보완해 줌.


1. 쿠키의 기본 구조

쿠키는 HTTP 응답 또는 자바스크립트를 통해 클라이언트에 저장되며, 이후 같은 도메인에 요청할 때 자동으로 포함되어 전송됨.

예시 (HTTP 헤더):

Set-Cookie: userId=12345; Path=/; Max-Age=3600; HttpOnly; Secure; SameSite=Lax

2. 쿠키의 주요 속성들

속성 설명
Name=Value 쿠키의 키-값 쌍
Domain 쿠키가 전송될 도메인 지정 (example.com, .example.com 등)
Path 쿠키를 전송할 URL 경로 (예: /admin)
Expires / Max-Age 쿠키의 유효기간 지정 (Expires=날짜, Max-Age=초)
Secure HTTPS 연결에서만 전송되도록 제한함
HttpOnly 자바스크립트에서 접근 불가능하게 하여 XSS 방지
SameSite 크로스 사이트 요청에 대한 쿠키 전송 제한 설정

3. SameSite 속성

SameSiteCSRF(Cross Site Request Forgery) 와 같은 공격을 방지하기 위한 보안 옵션임.

설명
Strict 오직 동일 사이트에서의 요청에만 쿠키 전송 (가장 안전)
Lax GET/HEAD 등 안전한 요청에 한해 쿠키 전송 허용, 로그인 후 리디렉션에는 허용됨
None 모든 크로스 사이트 요청에도 쿠키 전송 허용, 반드시 Secure 속성과 함께 사용해야 함

주의: SameSite=None 설정 시 Secure 속성이 없으면 쿠키가 브라우저에 의해 차단됨


4. 쿠키와 세션의 관계

  • 쿠키: 클라이언트 측에 저장됨, 단순한 key-value 데이터
  • 세션: 서버 측에서 상태 저장, 클라이언트는 세션ID를 쿠키로 보냄

→ 세션도 내부적으로는 세션ID를 저장하는 쿠키를 통해 구현되는 경우가 많음


5. 쿠키의 저장 위치

분류 저장 위치
Persistent Cookie 브라우저에 파일로 저장, 재시작 후에도 유지
Session Cookie 메모리에 저장, 브라우저 종료 시 삭제됨

6. 자바스크립트에서 쿠키 다루기

읽기:

console.log(document.cookie); // "userId=12345; token=abc"

쓰기:

document.cookie = "theme=dark; Max-Age=3600; Path=/";

주의:

  • HttpOnly 속성이 있는 쿠키는 document.cookie 로 접근 불가

7. 실무에서의 보안 설정 예시

  • HttpOnly: XSS 공격 차단
  • Secure: HTTPS 환경에서만 전송 → 중간자 공격 방지
  • SameSite=Strict or Lax: CSRF 방지
  • Max-Age 제한: 쿠키 유효기간을 짧게 설정하여 세션 탈취 피해 최소화

8. 쿠키와 로컬스토리지/세션스토리지 비교

항목 쿠키 로컬스토리지 세션스토리지
크기 제한 약 4KB 약 5~10MB 약 5~10MB
브라우저 전송 자동으로 HTTP 요청에 포함됨 포함되지 않음 포함되지 않음
만료 시점 설정 가능 브라우저에서 삭제 전까지 유지 탭 종료 시 삭제
보안 설정 HttpOnly, Secure 가능 불가능 불가능

9. 실무 적용 예

  • 로그인 유지: Set-Cookie: token=abc123; HttpOnly; Secure; SameSite=Lax
  • 쇼핑몰 장바구니: Set-Cookie: cartId=xyz789; Max-Age=86400
  • 언어 설정: Set-Cookie: lang=ko; Path=/; Max-Age=31536000

정리

쿠키는 웹 브라우저에 상태를 저장하는 기본 수단으로, 사용자 인증, 설정 저장, 세션 유지 등에 활용됨.
보안과 관련된 속성들(Secure, HttpOnly, SameSite)을 올바르게 설정해야 CSRF, XSS 등 보안 위협으로부터 안전하게 보호할 수 있음.
현대 웹 개발에서는 쿠키를 사용할 때 항상 보안 전략과 브라우저 정책을 함께 고려해야 함.

 

 

 

 

출처 : ChatGPT

'CS' 카테고리의 다른 글

Gof 디자인 패턴  (0) 2025.05.13
세션  (0) 2025.05.11
매직 넘버  (0) 2025.05.09
3-Way Handshake  (0) 2025.05.08
프로토콜  (0) 2025.05.03