본문 바로가기
스터디/백엔드

[백엔드] 쿠키(Cookie)란?

by dingwoon 2024. 12. 13.

쿠키와 세션 모두 HTTP의 무상태성(stateless)을 보완하기 위한 것으로, 클라이언트와 서버 간의 상태를 유지하기 위한 두 가지 주요 기술이다.

이 글에서는 먼저 쿠키에 대해 알아보고 쿠키를 통한 방식의 한계를 알아본 다음, 다음 글에서 이를 해결할 수 있는 세션에 대해 알아볼 예정이다.

목차

1 쿠키란?
 1.1 쿠키의 특징
 1.2 쿠키의 종류
2 쿠키의 문제점
3 쿠키와 웹 표준

1 쿠키란?

쿠키는 HTTP의 무상태성을 보완하기 위한 기술 중 하나로 클라이언트(사용자의 브라우저)에 저장되는 데이터이다. 쿠키가 설정된 이후 만료 전까지 HTTP 메시지 헤더에 쿠키가 포함되어 전송된다.

1.1 쿠키의 특징

  • 쿠키는 클라이언트(사용자의 브라우저)에 저장된다.
  • 쿠키는 key-value 쌍 형태로 저장되고, 여러 데이터를 저장할 수 있다.
  • 쿠키는 HTTP 요청 시 자동으로 요청 헤더에 포함되어 전송된다.
  • 쿠키는 HTTP 요청 시 쿠키 정보를 포함할 도메인을 설정할 수 있다.
  • 따로 포함시킬 도메인을 설정하지 않으면 쿠키를 설정한 도메인에 대한 요청에만 쿠키가 포함된다.
  • 쿠키는 만료 시점(Expires 또는 Max-Age)을 설정할 수 있다.
  • 만료 시점이 설정된 쿠키를 영구 쿠키(Persistent Cookie)라고 하고, 만료 시점이 설정되지 않은 쿠키를 세션 쿠키(Session Cookie)라고 한다.
  • 영구 쿠키는 브라우저의 로컬 디스크에 파일로 저장되어서 만료 시점 이후에 삭제되고, 세션 쿠키는 브라우저가 종료될 때 삭제된다.
  • set-cookie 예시
    Set-Cookie: user=kim; Max-Age=86400; Domain=example.com; Path=/; Secure; HttpOnly; SameSite=Strict
    (HTTP 요청에 설정된 쿠키는 브라우저의 "개발자 도구"의 "Network" 탭에서 확인할 수 있다.)

1.2 쿠키의 종류

  • Session Cookie
    만료 시점을 설정하지 않아 브라우저가 닫힐 때 같이 사라지는 쿠키
    • 사용 예시) 쇼핑몰 방금 본 상품 저장
  • Persistent Cookie
    만료 시점을 설정하여 브라우저 종료와 상관없이 그 만료 시점까지 유지되는 쿠키
    브라우저가 닫겨도 저장되어 있을 수 있어서 민감한 정보를 담지 않는 것이 좋다.
    • 사용 예시) 사이트 내의 사용자 설정 저장
  • Secure Cookie
    Secure 속성이 설정된 쿠키로, HTTPS를 통해서만 정송되며, 민감한 데이터의 전송에 사용되는 쿠키
    HTTPS를 사용하지 않는 사이트에서는 작동하지 않는다.
    통신 상에서만 HTTPS로 보호되고, 클라이어트나 저장된 파일에서 탈취되는 것은 막지 못한다.
    • 사용 예시) 로그인 토큰이나 세션 정보 등 민감한 데이터를 저장
  • HttpOnly Cookie
    HttpOnly 속성이 설정된 쿠키로, 클라이언트의 자바스크립트 코드에서 접근할 수 는 쿠키
    XSS(Cross-Site Scripting) 공격으로부터 쿠키 탈취를 방지할 수 있다.
    • XSS란?
      XSS는 사용자가 악성 웹사이트에 방문할 때 사용자의 브라우저에서 악성 스크립트가 실행되도록하는 보안 취약점이다.
      쿠키에 HttpOnly 속성을 설정하지 않으면, XSS를 통해 쿠키를 탈취할 수 있다.
  • SameSite Cookie
    SameSite 속성이 설정된 쿠키로, 요청이 동일한 사이트에서 발생한 경우에만 쿠키를 전송하도록 제한하는 쿠키
    CSRF(Cross-Site Request Forgery) 공격을 예방하는 데 유용하다.
    • CSRF란?
      CSRF는 사용자가 수행하지 않은 요청을 공격자가 위조해서 웹 애플리케이션에 요청을 보내는 웹 보안 취약점이다.
      쿠키에 SameSite 속성을 설정하면 이를 방지할 수 있다.

2 쿠키의 문제점

쿠키를 몇 가지 문제점이 있다. 이에 대해 알아보자.

  • 쿠키의 문제점
    • 쿠키는 보안에 취약하다. 쿠키에 저장된 정보는 쉽게 탈취 당할 수 있다.
    • 쿠키는 저장 용량에 제한이 있어서 대량의 데이터를 저장하지 못한다.
    • 쿠키는 클라이언트에 저장되기 때문에 쉽게 변조될 수 있다.
    • 쿠키는텍스트 그대로 저장되기 때문에 따로 암호화 한 값이 아니면 누구든 확인할 수 있다.

3 쿠키의 웹 표준

쿠키의 웹 표준은 RFC 6265에 정의되어 있다.

  • 쿠키 생성 및 전송
    쿠키는 서버가 HTTP 응답 헤더의 Set-Cookie 필드를 통해 클라이언트에 설정한다.
    또한 설정된 쿠키는 HTTP 요청 시에 헤더에 포함되어 서버로 전송된다.

      HTTP 응답:
      Set-Cookie: sessionId=abc123; Max-Age=3600; Path=/; HttpOnly
    
      HTTP 요청:
      Cookie: sessionId=abc123
  • 쿠키 속성

    • Expires와 Max-Age
    • Domain
      기본적으로 쿠키는 설정한 도메인에서만 사용되지만, 하위 도메인에서도 사용할 수 있도록 설정할 수 있다.
    • Path
    • Secure
    • HttpOnly
    • SameSite
  • 쿠키의 크기 및 개수 제한
    쿠키의 크기는 일반적으로 4KB로 제한된다.
    저장 가능한 쿠키의 개수는 브라우저마다 다르다. 보통 50~180개 정도이다.

'스터디 > 백엔드' 카테고리의 다른 글

도커(Docker) 용어 이해 및 의문점  (0) 2025.04.07
Docker에 대한 의문점 1편  (0) 2025.04.02