쿠키
브라우저에 저장되는 작은 텍스트 데이터입니다. 서버가 클라이언트를 식별하거나 정보를 유지하는 데 사용합니다.
왜 필요한가?
- HTTP는 무상태 → 요청마다 누구인지 모름
- 쿠키로 클라이언트에 정보를 저장해서 상태 유지
- 로그인 유지, 장바구니, 사용자 설정 등에 활용
동작 방식
1. 서버가 쿠키 설정
HTTP/1.1 200 OK
Set-Cookie: userId=abc123; Max-Age=3600
2. 브라우저가 저장
3. 이후 요청마다 자동 전송
GET /page HTTP/1.1
Cookie: userId=abc123
쿠키 속성
| 속성 | 설명 |
| Max-Age / Expires | 만료 시간 설정 |
| Domain | 쿠키가 전송될 도메인 |
| Path | 쿠키가 전송될 경로 |
| HttpOnly | JavaScript 접근 차단 (XSS 방어) |
| Secure | HTTPS에서만 전송 |
| SameSite | 크로스 사이트 요청 제한 (CSRF 방어) |
쿠키 종류
| 종류 | 설명 |
| 세션 쿠키 | 브라우저 닫으면 삭제 |
| 영구 쿠키 | 만료일까지 유지 |
| 퍼스트파티 | 현재 사이트가 설정 |
| 서드파티 | 다른 도메인이 설정 (광고 추적 등) |
보안 설정 예시
Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Strict
- HttpOnly:
document.cookie로 접근 불가
- Secure: HTTPS에서만 전송
- SameSite=Strict: 다른 사이트에서 요청 시 쿠키 안 보냄
쿠키의 한계
- 용량 제한 (약 4KB)
- 매 요청마다 전송 → 트래픽 증가
- 보안 취약 (탈취 가능) → HttpOnly, Secure 필수
쿠키 vs 웹 스토리지
| 항목 | 쿠키 | localStorage | sessionStorage |
| 용량 | 4KB | 5~10MB | 5~10MB |
| 서버 전송 | 자동 | 안 됨 | 안 됨 |
| 만료 | 설정 가능 | 없음 | 탭 닫으면 삭제 |