기술 노트/정보보안기사

Set-Cookie 헤더와 쿠키 구조 이해하기

anothel 2025. 1. 15. 21:58

1. 개요

쿠키(cookie)는 웹사이트가 사용자의 브라우저에 저장하는 작은 데이터이다. 사용자가 로그인 상태를 유지하거나 장바구니 정보를 저장하는 등의 작업에 사용된다. 이 작은 데이터 덕분에 웹사이트는 사용자를 식별하고, 각종 상태 정보를 관리하며, 사용자 경험을 개인화할 수 있다. 쿠키는 이름=값 형태의 구조를 가지며, 사용자의 브라우저에 저장되어 서버와 클라이언트 간 상호작용을 가능하게 한다.

2. 쿠키의 주요 기능

  1. 세션 관리
    로그인 정보, 장바구니 상태 등을 저장하여 사용자의 세션을 유지한다. 예를 들어, 쇼핑몰에서는 사용자가 상품을 선택하고 브라우저를 닫았다가 다시 열어도 이전 선택이 유지되도록 한다.
  2. 개인화
    사용자의 언어 설정, 테마, 즐겨찾기와 같은 정보를 기억해 다음 방문 시에도 동일한 환경을 제공한다.
  3. 추적 및 분석
    방문자의 행동 데이터를 기록하여 웹사이트 성능을 분석하고 맞춤형 마케팅 전략을 세운다. 예를 들어, 특정 제품 페이지를 자주 방문한 사용자에게 관련 광고를 표시할 수 있다.

3. 쿠키의 구조와 속성

쿠키는 기본적으로 이름=값 형태로 구성되며, 다음과 같은 속성을 포함한다:

  • 이름(Name): 쿠키를 구분하는 고유 키.
  • 값(Value): 저장할 데이터.
  • 도메인(Domain): 쿠키가 유효한 도메인을 지정한다.
  • 경로(Path): 특정 URL 경로에서만 유효하도록 설정한다.
  • 유효기간(Expires/Max-Age): 쿠키의 만료 시점을 설정한다.
  • 보안 속성(Secure, HttpOnly): HTTPS로만 전송되거나, JavaScript에서 접근하지 못하도록 설정한다.

예시:

Set-Cookie: sessionId=abc123; Path=/; Domain=example.com; Secure; HttpOnly

이 쿠키는 example.com의 모든 경로에서 유효하며, HTTPS 연결에서만 전송되고 JavaScript 접근이 제한된다.

4. 쿠키의 동작 원리

  1. 설정(Set-Cookie 헤더)
    • 서버는 HTTP 응답에 Set-Cookie 헤더를 포함시켜 브라우저에 쿠키를 설정한다.
    • 예시: Set-Cookie: user=JohnDoe; Path=/; Max-Age=3600; HttpOnly
  2. 전송
    • 브라우저는 쿠키를 요청 시 Cookie 헤더에 포함해 서버로 전송한다.
    • 예시: Cookie: user=JohnDoe
  3. 클라이언트 저장
    • 사용자의 브라우저가 쿠키를 저장하며, 사용자는 이를 브라우저 설정에서 확인하거나 삭제할 수 있다.

5. 여러 값 저장과 표준화된 방식

여러 값을 저장할 경우, JSON 형식이나 & 구분자를 사용하는 것이 일반적이다.

JSON 형식 예시:

Set-Cookie: preferences={"theme":"dark","language":"en"}; Path=/

쿼리 문자열 형식 예시:

Set-Cookie: preferences=theme=dark&language=en; Path=/

이 방식은 데이터 구조화와 시스템 간 호환성을 높인다.

6. 쿠키의 유형

  1. 세션 쿠키: 브라우저 종료 시 삭제되는 임시 쿠키. 로그인 상태 유지에 사용된다.
  2. 영구 쿠키: 특정 유효기간까지 유지되며, 사용자 설정(예: 언어, 테마)을 기억한다.
  3. 보안 쿠키: HTTPS 연결에서만 전송되며, 민감한 정보를 보호한다.
  4. HttpOnly 쿠키: JavaScript 접근을 차단하여 보안성을 높인다.

7. 장점과 단점

장점:

  • 사용자 경험 개선(맞춤형 서비스 제공)
  • 효율적인 세션 관리
  • 웹사이트 분석 및 마케팅 활용

단점:

  • 프라이버시 침해 가능성
  • 보안 위협(XSS, CSRF 공격 등)
  • 제한된 저장 용량(약 4KB)

8. 결론

쿠키는 웹사이트와 사용자를 연결하는 중요한 기술이다. Set-Cookie 헤더를 통해 설정되는 쿠키는 웹사이트가 개인화된 경험을 제공하고, 상태 정보를 효율적으로 관리할 수 있게 한다. 하지만 보안 속성(Secure, HttpOnly)을 적절히 설정하고, 프라이버시 문제를 고려해 신중히 관리해야 한다.

 

728x90