쿠키 vs 세션 vs JWT

2025. 9. 11. 20:28·Backend

쿠키 vs 세션 vs JWT

웹 개발을 하다 보면 항상 부딪히는 주제가 있습니다. 바로 사용자 인증(로그인)이에요.
“사용자가 로그인했는지, 로그인했다면 누구인지”를 서버가 어떻게 기억할까요?
여기서 쿠키(Cookie), 세션(Session), JWT(Json Web Token)이 등장합니다.


1. 쿠키(Cookie)

  • 정의: 브라우저에 저장되는 작은 데이터 조각
  • 저장 위치: 클라이언트(브라우저)
  • 용도: 로그인 상태 유지, 사용자 설정(언어, 테마 등) 저장
  • 특징:
    • 서버가 응답할 때 Set-Cookie 헤더를 내려주면, 브라우저가 저장
    • 이후 같은 도메인에 요청할 때 자동으로 쿠키를 함께 보냄

👉 예시

  • 내가 로그인 후 페이지를 새로고침했는데 계속 로그인 상태로 남아있는 것 = 쿠키 덕분

2. 세션(Session)

  • 정의: 서버가 사용자 정보를 저장하는 방식
  • 저장 위치: 서버 메모리(또는 Redis 같은 저장소)
  • 동작 원리:
    1. 사용자가 로그인 성공 → 서버가 세션 ID 발급
    2. 세션 ID를 쿠키에 담아 브라우저로 전송
    3. 이후 요청 시 브라우저가 세션 ID를 함께 보냄
    4. 서버는 세션 저장소에서 세션 ID를 조회해 사용자 확인

👉 예시

  • 회사 인트라넷 로그인 → 서버가 “세션 ID = abc123” 발급 → 이후 요청에서 abc123을 통해 사용자 판별

3. JWT(Json Web Token)

  • 정의: 토큰 기반 인증 방식, JSON 형태의 데이터를 암호화해 담은 토큰
  • 저장 위치: 주로 클라이언트(LocalStorage, Cookie 등)
  • 구조: Header.Payload.Signature
    • Header: 토큰 타입과 알고리즘
    • Payload: 사용자 정보(예: userId, 권한)
    • Signature: 변조 여부 검증용 서명
  • 특징:
    • 서버가 따로 세션을 저장하지 않음 (Stateless)
    • 토큰 자체에 정보가 담겨 있어, 검증만 하면 됨
    • 모바일/마이크로서비스 환경에서 많이 사용

👉 예시

  • 소셜 로그인(Google, Kakao)에서 발급받는 토큰
  • Authorization: Bearer <JWT> 헤더로 API 요청

4. 쿠키 vs 세션 vs JWT 비교

구분 쿠키 세션 JWT
저장 위치 클라이언트(브라우저) 서버 클라이언트
인증 방식 클라이언트가 값 보관 세션 ID로 서버 조회 토큰 자체에 정보 포함
장점 간단, 브라우저 내장 기능 서버가 안전하게 관리 확장성 좋음, 서버 부하 적음
단점 보안에 취약(XSS, 탈취 위험) 서버 메모리/저장소 필요 토큰 크기가 큼, 만료 전까지 무효화 어려움
활용 예 다크 모드 설정, 장바구니 전통적인 웹 로그인 소셜 로그인, 모바일 API 인증

5. 정리

  • 쿠키 : 브라우저에 저장되는 데이터, 로그인 상태 유지용으로 자주 사용
  • 세션 : 서버에서 사용자 정보를 관리, 보안이 더 강함
  • JWT : 토큰 기반 인증, 서버가 상태를 저장하지 않아 확장성 좋음
저작자표시 (새창열림)
'Backend' 카테고리의 다른 글
  • REST API
  • JPA(Java Persistence API)
  • 캐시(Cache)
  • 멀티 스레드
쭈니어 개발자
쭈니어 개발자
    홈 |
  • 쭈니어 개발자
    주니어 개발자 공부 기록
    쭈니어 개발자
  • 글쓰기 관리
  • 전체
    오늘
    어제
  • GitHub

    Notion

    • 분류 전체보기 (134)
      • Frontend (4)
      • Backend (21)
      • Database (4)
      • Data Structure & Algorithm (41)
      • Network (16)
      • IT Education (48)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    백준
    자바
    코테
    트리의 지름
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
쭈니어 개발자
쿠키 vs 세션 vs JWT
상단으로

티스토리툴바