브라우저에 저장되는 작은 데이터 조각(최대 4KB)으로, 클라이언트와 서버 간의 상태 정보를 유지하는 데 사용됩니다.
동작 방식
- 서버에서 HTTP 응답 헤더(Set-Cookie)를 통해 쿠키를 생성
- 이후 클라이언트는 HTTP 요청 시 자동으로 Cookie 헤더에 쿠키 값을 담아 서버로 전달
- 클라이언트 측에서는 document.cookie로 쿠키를 읽고 조작할 수 있음 (단, HttpOnly 설정 시 불가)
쿠키의 구성 요소 및 속성
| 속성 | 설명 |
| name=value | 쿠키의 이름과 값 |
| Expires / Max-Age | 만료 날짜 또는 만료까지 남은 시간 지정 |
| Path | 쿠키를 사용할 수 있는 URL 경로 지정 |
| Domain | 쿠키가 유효한 도메인 지정 |
| Secure | HTTPS에서만 쿠키 전송 가능 |
| HttpOnly | 자바스크립트에서 쿠키 접근 불가 |
| SameSite | 쿠키의 크로스사이트 전송 제한 (Strict, Lax, None) |
세션 쿠키 (Session Cookie)
- Expires 또는 Max-Age 미설정
- 브라우저가 종료되면 삭제됨 (일시적)
영구 쿠키 (Persistent Cookie)
- 만료 시점 설정됨
- 브라우저를 종료해도 저장된 채 유지됨
- 사용자 로그인 유지 등 장기적 상태 유지에 사용됨
보안 옵션
| 옵션 | 설명 |
| Secure | HTTPS 연결일 경우에만 전송됨 ※ 최근 브라우저는 localhost 테스트 시 무시 |
| HttpOnly | 자바스크립트로 접근할 수 없어 XSS 공격 방지 |
| SameSite | 쿠키의 크로스사이트 전송 제한 - Strict: 완전 차단 - Lax: 일부 허용 - None: 완전 허용(단, Secure 필요) |
쿠키를 이용한 보안 (시큐어 코딩)
쿠키로 세션 및 로그인 정보를 관리하는 경우, 다음과 같은 보안 수칙을 지켜야 합니다:
- 민감한 정보는 담지 않기
- 세션 ID만 저장하고, 개인정보는 서버에서만 관리
- 세션 ID는 추측 불가능한 난수로 구성
- HttpOnly 설정 필수
- 자바스크립트로 쿠키를 탈취할 수 없도록 설정
- Secure 설정 사용
- HTTPS 환경에서만 전송되도록 제한
- 적절한 세션 만료 설정
- Expires 또는 Max-Age를 활용하여 일정 시간 후 자동 만료
쿠키 활용 예시
- 로그인 상태 유지 (세션 ID 저장)
- 장바구니 유지
- 사용자 환경 설정 저장 (다크모드 등)
- 광고 추적 및 행동 분석 (애널리틱스, 리타게팅 등)
'ZeroBase > CS' 카테고리의 다른 글
| 세션기반 인증 방식 (0) | 2025.07.25 |
|---|---|
| 로컬스토리지, 세션스토리지, 쿠키의 공통점과 차이점 (1) | 2025.07.25 |
| 웹 브라우저 캐시(세션 스토리지) (0) | 2025.07.23 |
| 인접 행렬과 인접 리스트 (2) | 2025.07.22 |
| 트리(이진트리) (0) | 2025.07.22 |