728x90

웹 개발에서 쿠키(cookie)는 사용자의 브라우저에 저장되는 작은 데이터 조각입니다. 쿠키는 웹 서버가 사용자의 상태를 기억할 수 있도록 도와주는 중요한 메커니즘이며, 예를 들어 로그인 상태 유지, 장바구니 정보 저장, 사용자 선호 설정 등을 위해 사용됩니다.

 쿠키(cookie)란?

  • 정의: 클라이언트(사용자)의 브라우저에 저장되는 작은 텍스트 파일.
  • 형식: key=value 형식이며, 추가적으로 Expires, Max-Age, Path, Domain, Secure, HttpOnly, SameSite 등의 속성을 가질 수 있습니다.
  • 주 사용 목적:
    • 세션 유지 (로그인 상태 등)
    • 사용자 추적 (애널리틱스, 광고)
    • 사용자 설정 저장 (언어, 테마 등)

 

 쿠키의 종류

쿠키는 다양한 기준으로 분류할 수 있습니다. 일반적으로는 수명(lifetime)과 접근 범위(scope) 기준으로 나뉩니다.

1.  Session Cookie (세션 쿠키)

  • 정의: 브라우저 세션 동안만 유지되는 쿠키. 브라우저를 닫으면 자동으로 삭제됨.
  • 저장 위치: 메모리 또는 브라우저의 임시 저장소.
  • 용도:
    • 로그인 세션 유지
    • 일시적인 사용자 상태 저장
  • Expires 또는 Max-Age 속성 없음: 브라우저가 종료되면 쿠키는 사라짐.
  • 보안: 민감한 정보를 저장할 때 자주 사용되며, 서버와의 지속적인 통신이 요구됨.

예시:

Set-Cookie: session_id=abc123; Path=/; HttpOnly

 

 

2.  Persistent Cookie (영속 쿠키)

  • 정의: 명시된 만료 시간(Expires 또는 Max-Age)까지 브라우저에 저장되는 쿠키.
  • 브라우저 종료 후에도 유지됨: 지정된 기간 동안 유효.
  • 용도:
    • 자동 로그인
    • 사용자 설정 및 선호도 저장
    • 방문자 추적
  • 보안: 장시간 유지되므로 민감한 데이터는 저장하지 않는 것이 권장됨.

예시:

Set-Cookie: user_id=12345; Expires=Wed, 30 Apr 2025 23:59:59 GMT; Path=/; Secure

 

 

 

속성 Session Cookie Persistent Cookie
수명 브라우저 세션 동안 명시된 기간 (Expires/Max-Age)
저장 위치 메모리 또는 임시 저장소 디스크에 저장
브라우저 종료 시 삭제됨 유지됨
사용 예시 로그인 상태 유지 자동 로그인, 사용자 설정

 

 

 

 

쿠키의 기본 구조

쿠키의 구조는 기본적으로 key=value 으로 시작하고, 그 뒤에 여러 개의 속성(attributes) 이 붙을 수 있습니다. 이 속성들은 쿠키의 동작 방식(유효기간, 접근 범위, 보안 등)을 정의합니다.

Set-Cookie: key=value; Attribute1=...; Attribute2=...; ...

 예시

Set-Cookie: session_id=abc123; Path=/; HttpOnly; Secure; Max-Age=3600; SameSite=Lax

 

 

 

 쿠키의 주요 구성 요소

항목 설명
key=value 쿠키의 **이름(name)**과 값(value) 쌍입니다. 가장 기본적인 정보입니다.
Expires 쿠키의 만료 시점을 명시합니다. (예: Expires=Wed, 30 Apr 2025 23:59:59 GMT)
Max-Age 쿠키의 유효 시간(초 단위)을 설정합니다. 이 시간이 지나면 쿠키는 삭제됩니다. (Max-Age=3600 → 1시간)
Domain 쿠키를 적용할 도메인 범위를 설정합니다. 기본적으로는 현재 요청한 도메인에만 적용됩니다.
Path 쿠키를 전송할 **경로(URI)**를 설정합니다. (Path=/이면 모든 경로에 쿠키가 전송됨)
Secure HTTPS 연결에서만 쿠키를 전송합니다.
HttpOnly JavaScript를 통해 접근할 수 없도록 설정하여 보안을 강화합니다.
SameSite 크로스 사이트 요청에서의 쿠키 전송 방식을 제한합니다. (Lax, Strict, None 중 선택 가능)

 

속성 설명

Expires vs Max-Age

  • Expires: 절대 시각 (UTC 시간 기준)
  • Max-Age: 상대 시간 (현재 시각으로부터 초 단위)

둘 중 하나만 있어도 동작하지만, Max-Age가 우선합니다.

Secure

Set-Cookie: key=value; Secure
  • 이 쿠키는 HTTPS 연결일 때만 브라우저가 서버에 전송합니다.

HttpOnly

Set-Cookie: key=value; HttpOnly
  • JavaScript의 document.cookie에서 이 쿠키를 읽거나 수정할 수 없습니다.
  • XSS 공격을 방지하는 데 유용합니다.

SameSite

Set-Cookie: key=value; SameSite=Lax
  • CSRF 방지를 위한 속성.
  • 옵션:
    • Strict: 완전한 차단 (타 사이트 요청 시 쿠키 미전송)
    • Lax: 기본값. 일부 안전한 요청(GET 등)은 허용
    • None: 크로스 도메인 요청에서도 쿠키 허용 (단, Secure 속성 필수)

 

728x90

+ Recent posts