HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
💌
JJong’s Archive
/
쿠키 vs 세션 vs 토큰

쿠키 vs 세션 vs 토큰

날짜
Dec 24, 2024 12:04 AM
모두 인증 및 상태 관리를 위해 사용되는 기술
 
[브라우저] (쿠키 → 세션id)
↓
[세션] (세션db → 데이터)
 
 
  1. 쿠키 (Cookie) : 클라에 있는 저장소
      • 세션 id, 사용자 설정을 저장
      • 저장 위치: 클라이언트(only 브라우저).
  1. 세션 (Session) : id로 서버의 데이터에 접근해 관리하는 “방법”
      • 서버가 사용자 상태(데이터)를 가짐 ⇒ db 필요 o
      • 저장 위치: 서버
  1. 토큰 : 암호화된 문자열
      • 앱에서는 쿠키 대신 토큰 사용(말고는 세션에 접근하는건 같음)
      • JWT 토큰이 유명함
        • JWT : 인증 정보를 포함한 암호화된 문자열.
        • 신원확인만 가능하고 자세한 사용자 데이터는 모름. ex. QR코드
        • 사용자 상태를 가지지 x(stateless) ⇒ db 필요x
        • 저장 위치: 클라이언트(Local/Session Storage, 쿠키 등).
 
사용 추천
  • 간단한 상태 유지 → 쿠키
  • 민감한 데이터 처리 → 세션
  • 무상태 필요 or 앱 → 토큰 (JWT)
 
쿠키와 토큰은 서버가 생산, 클라가 저장
 

쿠키 생성의 동작 과정

  1. 클라이언트 요청
      • 사용자가 웹사이트에 접속하면 브라우저는 서버에 HTTP 요청을 보냄
2. 서버에서 쿠키 생성 & HTTP 응답 헤더에 쿠키 포함 :
  • 서버는 응답을 보내기 전에, 클라이언트가 저장해야 할 데이터(세션 ID, 사용자 설정, 인증 정보 등)를 포함한 쿠키를 생성
  • 서버는 Set-Cookie라는 HTTP 응답 헤더를 통해 쿠키를 클라이언트로 전송
3. 클라이언트가 쿠키 저장:
  • 브라우저는 서버에서 받은 쿠키를 저장합니다.
  • 이후 동일한 도메인으로 요청할 때마다 해당 쿠키를 자동으로 포함하여 서버에 전송합니다.
/*서버의 응답*/ HTTP/1.1 200 OK Set-Cookie: sessionId=abc123; HttpOnly; Secure; Path=/; Max-Age=3600 /*클라의 요청*/ GET /dashboard HTTP/1.1 Host: example.com Cookie: sessionId=abc123