코드의 여백

[웹] '쿠키', '세션', '토큰', 'JWT', 무엇이 다를까?

by rowing0328

※ 이 글은 화이트보드 스케치를 바탕으로, 이해를 돕기 위해 제 관점에서 재구성한 내용입니다.

 

Intro

웹 개발을 시작하면 쿠키(Cookie) 정도는 금방 이해해도

세션(Session), 토큰(Token), 특히 JWT(Json Web Token)는 헷갈리기 쉽다.

 

하자만 각 기술의 동작 방식과 보안 포인트를 알면

인증/인가 흐름을 설계할 때 훨씬 명확한 기준을 세울 수 있다.

 

오늘은 화이트보드에 정리해 둔 핵심만으로

쿠키, 세션, 토큰, JWT의 차이를 한눈에 정리해 보겠다.

 

 

쿠키(Cookie)

  • 보안 취약
    값이 그대로 노출되므로 탈취 시 위험
  • 용량 제한
    저장할 수 있는 데이터가 적다
  • 브라우저 간 공유 불가
    같은 PC라도 다른 브라우저만 공유되지 않는다
  • 세밀한 제어
    • Domain: 어떤 도메인에서 쿠키가 유효한지 설정
    • Path: 어떤 경로에서 전송할지 제한 가능
    • Expires / Max-Age: 쿠키 만료 시간 설정
    • Secure: HTTPS 요청에서만 전송
    • HttpOnly: 자바스크립트에서 접근 불가 → XSS 방어

 

[ SameSite 속성 ]

SameSite는 CSRF 방지를 위해 도입된 속성으로, 쿠키의 교차 사이트 전송 여부를 제어한다.

 

  • Strict
    다른 사이트에서 온 요청에는 쿠키 절대 보내지 않는다.
  • Lax (기본값)
    사용자가 링크 클릭 등으로 이동한 경우엔 쿠키 전송 가능,
    자동 요청 (POST 등)에선 차단된다.
  • None
    다른 사이트에서도 항상 쿠키를 전송한다.
    단, 반드시 Secure가 함께 있어야 한다. (HTTPS 필수)

 

→ 쿠키는 작고, 범위 제어가 세밀하지만 평문 저장 특성 때문에 민감 정보 보관에는 적합하지 않다."

 

 

세션(Session)

  • 저장 위치
    메모리·로컬 파일 중 택 1 또는 DB
  • 형식
    세션ID ↔ 데이터 형태의 Key-Value
  • 저장 내용
    세션 생성 시간 / 마지막 접근 시간 / 사용자 정보 등 민감 데이터
  • 부담 요소
    서버가 상태를 저장하므로 확장 시 저장소 부담이 생긴다

 

→ 세션은 서버 측 저장 덕분에 비교적 안전하지만, 스케일 아웃을 고려하면 별도 세션 저장소 관리가 필요하다.

 

 

토큰(Token)

  • 클라이언트 저장
    민감 정보가 브라우저(클라이언트)에 남는다
  • 전송 위치
    Authorization 헤더
  • 변조 가능성 ↑
    클라이언트 보관 → 위·변조 위험 증가
  • 탈취 시 대응 ↓
    유출 대비 전략 필수
  • Payload 암호화 X
    기본적으로 암호화하지 않는다
  • 데이터 길이 ↓
    짧은 문자열 → 요청·네트워크 부하 감소

 

→ 토큰은 무상태(Stateless)라서 서버 부담이 적지만, 변조·탈취 대응 정책을 반드시 마련해야 한다.

 

 

JWT(Json Web Token)

Header.Payload.Signature 구성으로,
Base64(Header) + "." + Base64(Payload)에 서버 Key로 전자서명(Signature)을 붙인다.

 

왜 JWT인가?

  • Header·Payload는 복호화할 수 있어도 조작은 불가(서명 불일치 시 즉시 변조 감지)
  • 여러 서버 간 권한 공유가 쉽다
  • 데스크톱·모바일 환경 모두 동일 방식으로 동작한다

 

→ JWT는 무상태 + 서명 무결성 덕분에 분산 시스템에 적합하지만,
    Payload가 누구나 읽을 수 있으므로 민감 정보는 절대 포함하지 말 것.

 

 

마무리

  • Cookie
    범위 제어는 세밀하지만 평문 노출 → 민감 정보 X
  • Session
    서버-측 안전하지만 저장소·확장 부담 O
  • Token
    무상태·가볍지만 변조/탈취 대응 필수
  • JWT
    전자서명으로 변조 방지, 분산 환경에 강점

 

각 기술의 특성을 이해하고,
앱 구조·보안 요구사항에 따라 알맞은 방식을 선택해 보자.

 

 

참고 자료:
RFC 6265 - HTTP State Management Mechanism

 

RFC 6265: HTTP State Management Mechanism

This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol

datatracker.ietf.org

 

RFC 7519 - JSON Web Token (JWT)

 

RFC 7519: JSON Web Token (JWT)

JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JS

datatracker.ietf.org


JWT(JSON Web Token) 알아보기

 

JWT(JSON Web Token) 알아보기

Intro최근 웹 애플리케이션에서는 사용자 인증 및 권한 부여를 위해 JSON Web Token (JWT) 이 많이 사용되고 있다. 이번 포스팅에서는 JWT의 기본 개념부터 구조, 동작 원리, 장단점을 살펴본다.  JWT란

dev-rowing.tistory.com

'🌎Web' 카테고리의 다른 글

[웹] JSON 알아보기  (0) 2025.05.13

블로그의 정보

코드의 여백

rowing0328

활동하기