Computer Science/NetWork

✅ 쿠키 vs 세션 vs 토큰 완벽 정리! 차이점과 웹 인증 구조 이해하기

추천캐릭터 2025. 8. 2. 13:59
728x90
반응형

🔷 쿠키(Cookie)란?

  • 정의: 사용자의 브라우저에 저장되는 작은 데이터
  • 주 용도: 로그인 유지, 사용자 설정 저장
  • 특징
    • 클라이언트(브라우저)에 저장됨
    • 서버가 Set-Cookie 헤더로 설정
    • 매 요청마다 자동으로 서버에 함께 전송됨
    • 보안에 취약할 수 있음 (노출 가능성)
Set-Cookie: sessionId=abc123; Path=/; HttpOnly

🔷 세션(Session)이란?

  • 정의: 서버가 사용자 정보를 서버 메모리 또는 DB에 저장하고 식별하는 방식
  • 주 용도: 인증 정보 저장 (로그인 상태)
  • 특징
    • 서버에서 관리됨
    • 사용자는 식별자(sessionId)만 쿠키로 보유
    • 상대적으로 안전하지만 서버에 부담이 있음

🔷 토큰(Token)이란?

  • 정의: 인증 정보를 포함한 문자열(주로 JWT 형식)을 클라이언트가 보관
  • 주 용도: API 인증 (특히 모바일, SPA 등)
  • 특징
    • 주로 JWT 형태로 인코딩된 정보 포함
    • 클라이언트가 보관 (쿠키나 로컬스토리지)
    • Stateless 구조 (서버가 상태 저장 안 함)
    • 보안 주의: XSS, 탈취 방지 필요
    •  
Header.Payload.Signature (JWT 구조 예시)

🔷 쿠키 vs 세션 vs 토큰 비교

항목쿠키세션토큰
저장 위치 브라우저 서버 브라우저
서버 상태 Stateless Stateful Stateless
보안 낮음 높음 중간 (구현에 따라 다름)
인증 방식 X O (세션 ID) O (Access Token)
API 사용 제한적 부적합 매우 적합
 

🔷 실무 예시

  • 쿠키: 자동 로그인, 장바구니, 테마 설정 등
  • 세션: Spring MVC 로그인 처리 시 사용 (HttpSession)
  • 토큰: Spring Security + JWT, OAuth 인증 등에서 사용

✅ 마무리

쿠키, 세션, 토큰은 각각의 목적과 장단점이 있으며,
웹 서비스의 규모, 보안 요건, 확장성에 따라 적절히 선택해야 합니다.
특히, SPA + 모바일 API 환경에서는 토큰 기반 인증(JWT)이 주로 사용됩니다.

728x90
반응형