ZeroBase/CS

웹 브라우저 캐시(쿠키)

Red_Horse 2025. 7. 23. 15:46

브라우저에 저장되는 작은 데이터 조각(최대 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 필요)
 

쿠키를 이용한 보안 (시큐어 코딩)

쿠키로 세션 및 로그인 정보를 관리하는 경우, 다음과 같은 보안 수칙을 지켜야 합니다:

  1. 민감한 정보는 담지 않기
    • 세션 ID만 저장하고, 개인정보는 서버에서만 관리
    • 세션 ID는 추측 불가능한 난수로 구성
  2. HttpOnly 설정 필수
    • 자바스크립트로 쿠키를 탈취할 수 없도록 설정
  3. Secure 설정 사용
    • HTTPS 환경에서만 전송되도록 제한
  4. 적절한 세션 만료 설정
    • Expires 또는 Max-Age를 활용하여 일정 시간 후 자동 만료

쿠키 활용 예시

  • 로그인 상태 유지 (세션 ID 저장)
  • 장바구니 유지
  • 사용자 환경 설정 저장 (다크모드 등)
  • 광고 추적 및 행동 분석 (애널리틱스, 리타게팅 등)