본문 바로가기
IOT

쿠키 vs 세션 vs JWT, 로그인 상태는 어떻게 유지될까?

by PixelLogic 2025. 7. 19.

웹사이트에 로그인하면 새로고침해도 그대로 로그인 상태가 유지되죠?
“브라우저는 어떻게 내가 로그인한 걸 기억할까?”

이때 등장하는 게 바로 쿠키(Cookie), 세션(Session), 그리고 요즘 많이 쓰는 **JWT(Json Web Token)**입니다.
오늘은 이 세 가지의 차이를 아주 쉽게 풀어볼게요!


1️⃣ 왜 로그인 상태를 저장해야 할까?

HTTP는 **“요청하고 응답하면 끝”**인 단순한 통신 방식이에요.
즉,

  • 내가 로그인한 뒤에도
  • 다음 요청 때는 “누가 요청했는지” 서버가 알 수 없음 😅

그래서 사용자를 구분할 방법이 필요합니다.
👉 그걸 해결하는 기술이 쿠키, 세션, JWT예요.


2️⃣ 쿠키(Cookie)란?

브라우저에 저장되는 작은 메모

  • 서버가 “이 사용자는 로그인했어”라고 쿠키를 발급
  • 브라우저는 쿠키를 저장하고
  • 다음 요청마다 쿠키를 함께 보냄
  • 서버는 쿠키를 보고 “아, 이 사람은 로그인한 사용자구나” 확인

👉 즉, 브라우저가 서버에게 “저 로그인한 사람 맞아요”라고 보여주는 증거


3️⃣ 세션(Session)이란?

서버에서 관리하는 사용자 정보

  • 사용자가 로그인하면,
    서버가 세션 저장소에 사용자 정보 저장
    → 그리고 **세션ID(임시번호)**만 브라우저에 쿠키로 줌
  • 다음 요청 때 브라우저가 세션ID 보내면,
    서버가 세션 저장소에서 “이건 누구 정보인지” 확인

👉 즉, 브라우저에는 세션ID만 저장하고, 실제 정보는 서버가 관리


4️⃣ JWT(Json Web Token)이란?

사용자 정보를 암호화해서 토큰에 담아 전달

  • 로그인 성공 시 JWT 토큰 발급
  • 이 토큰 안에 “누구인지 + 언제 발급됐는지” 정보가 포함
  • 이후 요청 때 토큰을 보내면 서버가 검증하고 처리
  • 서버가 별도로 세션 저장소를 관리하지 않아도 됨

👉 즉, 서버가 기억하지 않아도 되는 ‘자급자족형 로그인 정보’


5️⃣ 쉽게 비유하면?

  • 쿠키 = 이름표
    • “나는 로그인한 사용자야”라고 브라우저가 직접 붙이고 다님
  • 세션 = 보관증
    • 브라우저는 보관증(세션ID)만 가지고,
    • 실제 정보는 **서버 창고(세션 저장소)**에 보관
  • JWT = 비밀이 담긴 봉투
    • 서버가 봉투에 정보+서명해서 줌
    • 브라우저가 봉투를 다시 보여주면, 서버가 열어보고 확인

6️⃣ 언제 뭘 쓰면 좋을까?

쿠키

  • 단순한 정보 저장
  • 자동로그인, 간단한 설정값 저장

세션

  • 중요한 로그인 정보
  • 서버 메모리가 필요 (많아지면 부담됨)

JWT

  • 서버를 여러 대(분산환경)로 운영할 때 유리
  • 모바일 앱/REST API 인증에 많이 사용
  • 단, 토큰 크기가 커질수록 네트워크 비용 증가

7️⃣ 간단 정리

구분 저장 위치 장점 단점
쿠키 브라우저 간단, 빠름 보안 취약
세션 서버 + 브라우저 상대적 보안 ↑ 서버 부담 ↑
JWT 브라우저 서버 부담 X, 확장성 ↑ 토큰 탈취 시 위험
 

👉 요즘은 세션 + JWT 혼합 방식으로도 많이 사용합니다.


다음 글에서는 GET vs POST, 언제 어떤 메서드를 써야 할까?
도 쉽게 풀어서 설명할게요!

궁금한 점은 댓글로 남겨주세요 😊