본문 바로가기
개발 공부/서버

[서버 기초] 세션, 쿠키, JWT? 로그인 상태 유지 방식 깔끔 정리!

by 악마의 개발자 2025. 5. 1.
반응형

세션, 쿠키, JWR 로그인 상태 유지 방식


💡 "로그인했는데, 어떻게 내가 나인지 기억하는 거야?"

웹사이트에 로그인했더니

"오늘도 로그인 안 풀리고 잘 유지되네?"

그런데 로그인 유지하는 방법은 여러 가지가 있어요.

  • 세션(Session)
  • 쿠키(Cookie)
  • JWT (JSON Web Token)

이 세 가지가 왜 다른지, 어떻게 쓰는지

 

오늘 깔끔하게 정리해드릴게요! 😊


🧾 쿠키(Cookie)란?

쿠키

브라우저에 저장되는 작은 데이터 파일입니다.

 

📦 특징:

  • 클라이언트(브라우저)가 보관
  • 매번 요청할 때 자동으로 같이 전송
  • Set-Cookie 헤더로 서버가 설정

예시:

Set-Cookie: session_id=abcd1234; HttpOnly;

✅ 주로 세션 ID 저장 용도로 사용!


🛡️ 세션(Session)이란?

세션

서버가 사용자 정보를 서버 메모리나 DB에 저장하고
클라이언트는 세션 ID만 쿠키에 보관하는 방식입니다.

 

흐름:

  1. 로그인 성공 → 서버가 세션 생성 → 세션 ID 발급
  2. 세션 ID를 쿠키에 저장
  3. 다음 요청마다 쿠키로 세션 ID 자동 전송
  4. 서버가 세션 ID 보고 → 사용자 정보 확인

민감한 정보는 서버가 보관 → 상대적으로 안전


🔑 JWT(JSON Web Token)란?

JWT

"사용자 정보를 토큰 안에 암호화해서 직접 넣어둔 것"입니다.

  • 토큰 자체가 사용자 인증 정보
  • 서버는 세션을 따로 저장 안 해도 됨 (Stateless)
  • Base64로 인코딩된 헤더.페이로드.서명 구조

JWT 예시:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

✅ 서버가 상태를 기억하지 않아도 → 클라이언트가 토큰을 보내서 인증!


🆚 세션 + 쿠키 vs JWT 비교표

항목 세션 + 쿠키 JWT
데이터 저장 위치 서버(세션 저장소) 클라이언트(토큰)
서버 상태 기억 O (Stateful) X (Stateless)
정보 저장 방식 세션 ID만 저장 유저 정보 자체 저장 (Payload)
보안 위험 세션 탈취 가능성 토큰 탈취 시 위험 (만료, 재발급 필요)
확장성 서버 부하 증가 (세션 관리 필요) 서버 부하 적음 (토큰만 검증)
모바일/다중 디바이스 JWT가 유리 세션은 디바이스마다 따로 관리

⚠️ 실무에서 언제 뭘 써야 할까?

상황 추천 방식
웹 + 서버만 있는 단순 로그인 세션 + 쿠키 (쉽고 안전)
모바일 앱 + 서버 + 다중 디바이스 JWT (확장성 좋음)
민감한 데이터 (은행 등) 세션 + 쿠키 (서버 보관이 더 안전)
대규모 서비스 + 마이크로서비스 JWT (Stateless가 유리)

🧩 헷갈리기 쉬운 질문 Q&A

Q. 쿠키랑 세션이 같은 거야?

→ ❌ 쿠키는 브라우저에 저장되는 데이터고,
→ 세션은 서버가 기억하는 공간입니다.
(세션 ID를 쿠키에 저장하는 경우가 많음!)

 

Q. JWT도 쿠키에 저장할 수 있어?

→ ✅ 네, JWT를 쿠키에 저장해도 되고,
→ 로컬스토리지, 세션스토리지에도 저장 가능.
(권장: HttpOnly 쿠키 → XSS 방어 가능)


🧠 정리 한마디!

구분 쿠키 세션 JWT
저장 위치 브라우저 서버 클라이언트
역할 정보 저장 사용자 상태 기억 사용자 인증 정보 포함
서버 상태 기억 X O X
확장성 보통 낮음 높음

"세션 + 쿠키 = 전통적인 로그인 방식"
"JWT = 토큰 기반, 모바일/대규모 서비스에 유리"


📌 다음 예고: "Proxy와 Reverse Proxy, 헷갈리는 프록시 개념 쉽게 이해하기!"

  • 프록시랑 리버스 프록시, 왜 이름이 이렇게 헷갈려?
  • 각각 어디서 쓰는 건지 딱 정리해드립니다!

✅ 관련 태그

#세션과쿠키 #JWT란 #로그인유지원리 #인증방식비교 #웹개발기초

반응형