쿠키와 세션의 차이 완전 정리 - 로그인이 유지되는 원리

0 조회

쿠키는 브라우저에 저장되는 데이터이고, 세션은 서버에 저장되는 사용자 상태 정보다.

이 글은 로그인이 어떻게 유지되는지, 장바구니 정보가 왜 남아있는지 궁금한 IT 입문자를 대상으로 작성되었다. 쿠키와 세션을 이해하면 웹 보안과 인증의 기초를 파악할 수 있다.

쿠키와 세션 개념

HTTP는 상태를 기억하지 못한다

웹의 기반인 HTTP 프로토콜은 무상태(Stateless) 방식이다. 각 요청은 독립적이어서, 서버는 이전 요청을 전혀 기억하지 못한다.

즉, 로그인 후 다음 페이지로 이동하면 서버는 "이 사람이 로그인했다"는 것을 모른다. 이 문제를 해결하기 위해 쿠키와 세션이 탄생했다.

쿠키(Cookie)란?

쿠키는 서버가 브라우저에 저장시키는 작은 텍스트 데이터 파일이다. 브라우저는 이후 같은 서버에 요청을 보낼 때 쿠키를 자동으로 포함시킨다.

쿠키의 주요 속성:

  • 이름=값: 저장할 데이터 (예: userId=12345)
  • Expires/Max-Age: 쿠키 유효 기간
  • Domain: 쿠키를 보낼 대상 도메인
  • Path: 쿠키를 보낼 URL 경로
  • Secure: HTTPS에서만 전송
  • HttpOnly: JavaScript 접근 불가 (XSS 방지)
  • SameSite: CSRF 공격 방지

쿠키의 종류

종류특징보관 기간
세션 쿠키브라우저 닫으면 삭제브라우저 세션 동안
영구 쿠키만료 날짜까지 유지설정된 날짜까지
서드파티 쿠키다른 도메인이 설정광고 추적에 사용
First-party 쿠키방문한 사이트가 설정로그인 유지 등

세션(Session)이란?

세션은 사용자 상태 정보를 서버 측에 저장하는 방식이다. 서버는 각 사용자에게 고유한 세션 ID를 발급하고, 이를 쿠키나 URL로 브라우저에 전달한다.

세션 동작 과정:

  1. 사용자가 로그인한다
  2. 서버가 세션 ID를 생성하고 서버 메모리(또는 Redis, DB)에 사용자 정보를 저장한다
  3. 세션 ID가 담긴 쿠키를 브라우저에 전달한다
  4. 이후 요청마다 브라우저가 세션 쿠키를 보내고, 서버는 해당 세션 ID로 사용자를 식별한다

쿠키 vs 세션 비교

구분쿠키세션
저장 위치브라우저(클라이언트)서버
보안성낮음 (클라이언트에 노출 가능)높음 (서버에서 관리)
만료 시점설정에 따라 다름브라우저 종료 또는 서버 설정
서버 부하없음있음 (세션 데이터 보관)
저장 용량4KB 제한서버 용량에 따라 다름
주요 용도자동 로그인, 사용자 설정 저장로그인 상태 유지

쿠키 세션 동작 흐름

쿠키와 세션이 실제로 쓰이는 사례

쿠키 활용 사례:

  • 쇼핑몰 로그인 상태 유지 ("로그인 상태 유지" 체크박스)
  • 광고 추적 (방문한 사이트 기반 맞춤 광고)
  • 사용자 언어/테마 설정 저장
  • 동영상 재생 위치 저장

세션 활용 사례:

  • 로그인 인증 (보안이 중요한 경우)
  • 쇼핑 장바구니 (비로그인 상태에서도 유지)
  • 일회성 데이터 저장

쿠키 보안 위협과 방어

쿠키 탈취(Session Hijacking): 공격자가 쿠키를 가로채 사용자 계정을 탈취한다.

  • 방어: HTTPS 사용 + Secure 속성 설정

XSS 공격: 악성 스크립트로 쿠키를 훔친다.

  • 방어: HttpOnly 속성으로 JavaScript 접근 차단

CSRF 공격: 사용자 모르게 요청을 보낸다.

  • 방어: SameSite=Strict 또는 CSRF 토큰 사용

자주 묻는 질문 (FAQ)

Q1. 쿠키를 삭제하면 어떻게 되나요? A. 쿠키를 삭제하면 해당 웹사이트의 로그인 상태가 풀리고, 저장된 설정이 초기화된다. 서드파티 광고 추적 쿠키도 함께 삭제된다. 세션 쿠키는 브라우저를 닫으면 자동으로 삭제된다.

Q2. 쿠키는 해킹에 취약하다고 하는데, 어떻게 보호하나요? A. HttpOnly 속성으로 JavaScript 접근을 막고, Secure 속성으로 HTTPS에서만 전송하도록 설정한다. SameSite 속성으로 CSRF 공격을 방어하는 것이 기본적인 보안 조치다.

Q3. 시크릿 모드에서는 쿠키가 저장되지 않나요? A. 시크릿 모드에서도 쿠키는 사용되지만, 브라우저를 닫으면 모두 삭제된다. 즉, 시크릿 모드에서의 로그인이나 사용 기록은 세션 종료 시 사라진다.

Q4. 쿠키와 로컬스토리지(localStorage)의 차이는? A. 쿠키는 서버에 자동으로 전송되고 만료 기간 설정이 가능하다. 로컬스토리지는 브라우저에만 저장되고 서버로 자동 전송되지 않으며 만료 없이 영구 저장된다. 용량도 로컬스토리지(5~10MB)가 쿠키(4KB)보다 훨씬 크다.

Q5. JWT와 세션의 차이는 무엇인가요? A. 세션은 서버에 상태를 저장하지만, JWT는 토큰 자체에 사용자 정보를 포함하여 서버가 별도로 저장하지 않아도 된다. JWT는 마이크로서비스나 분산 시스템에 적합하고, 세션은 서버 자원을 사용하지만 즉시 무효화가 가능하다.

공유