쿠키(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 속성
SameSite 는 CSRF(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 |