🧐TIL

[다시하는 백엔드 기초 공부] 쿠키

쿠키(Cookie)

쿠키는 웹 서버가 사용자의 브라우저에 저장하는 작은 텍스트 데이터이다. HTTP는 본질적으로 무상태(stateless) 프로토콜이기 때문에, 요청과 요청 사이에 사용자를 구분할 수 없는데 쿠키는 이 한계를 보완하여, 사용자 상태를 기억하는 역할을 한다.

이전 포스팅에서의 세션 인증에 사용되는 것 외에도 장바구니에 담은 상품을 기억하거나 다크 모드/언어 설정 등을 유지하는데에도 사용된다.

쿠키는 아주 단순한 동작 방식을 가지고 있는데 기본적으로는 아래와 같다.

  1. 서버가 응답할 때 Set-Cookie 헤더를 통해 브라우저에 쿠키를 전달
  2. 클라이언트에서 쿠키를 생성 또는 전달 받은 쿠키를 저장
  3. 이후 같은 도메인의 서버에 요청을 할 때마다 자동으로 쿠키를 요청 헤더에 포함

쿠키의 구성요소

쿠키는 기본적으로 단순한 키-값 형태로 저장되지만, 몇 가지 옵션을 추가하여 보안성과 유효 범위를 조정할 수 있다.

  • Name: 쿠키의 이름
  • Value: 쿠키에 저장된 값
  • Domain: 쿠키가 적용될 도메인
  • Path: 쿠키가 적용될 URL 경로
  • Expires / Max-Age: 쿠키 만료 시간 지정 (없으면 브라우저 종료 시 삭제)
  • Secure: HTTPS 연결에서만 쿠키를 전송
  • HttpOnly: 자바스크립트에서 접근 불가 (XSS 공격 방지)
  • SameSite: 외부 사이트 요청 시 쿠키 전송 여부 제어 (CSRF 공격 방지)

쿠키의 종류

— 쿠키의 활용 방식에 따라 그 종류를 다음과 같이 나눌 수 있다.

  • **세션 쿠키(Session Cookie): **브라우저를 닫으면 사라짐 (임시 로그인 상태 유지 등)
  • **영속 쿠키(Persistent Cookie): **만료 기간이 설정된 쿠키. 브라우저를 껐다 켜도 유지됨
  • **1st Party Cookie: **현재 접속한 사이트가 발급한 쿠키
  • **3rd Party Cookie: **광고, 분석 서비스 등 외부 도메인이 발급한 쿠키

단점

  • 보안 위험 (XSS, CSRF에 노출될 수 있음)
  • 매 요청마다 전송되므로 성능 저하 가능
  • 저장 용량 제한 (도메인당 약 4KB, 20~50개 정도)