TIL(25.1.21)

채채·2025년 1월 21일

Today I Learned

목록 보기
61/75

세션(Session), 쿠키(Cookie), JWT(Json Web Token) 차이점 및 비교

웹 애플리케이션에서 사용자 인증 및 상태 관리를 위해 세션, 쿠키, JWT 많이 씀. 각각의 개념과 차이점 정리함.


1. 세션(Session)

  • 서버에서 사용자 정보 관리
  • 로그인하면 서버가 세션 ID 발급, 클라이언트에 저장
  • 이후 요청 시 세션 ID로 사용자 확인
  • 서버 부담 있음, 보안 좋음
  • 세션 동작 방식:
    • 로그인 시 서버가 세션 생성, 세션 ID 발급
    • 클라이언트가 쿠키에 세션 ID 저장
    • 요청 시 세션 ID 서버로 전송
    • 서버가 세션 정보 확인 후 처리

2. 쿠키(Cookie)

  • 클라이언트(브라우저)에 데이터 저장
  • 로그인 상태, 사용자 설정 저장 가능
  • 조작 가능성 있음, 용량 제한 있음(4KB)
  • 쿠키 동작 방식:
    • 서버가 쿠키 생성, 클라이언트 전달
    • 클라이언트가 브라우저에 저장
    • 이후 요청 시 쿠키 자동 전송

3. JWT (JSON Web Token)

  • JSON 형식 토큰 사용, 무상태 인증 가능
  • 서버에서 사용자 정보 저장 안 함, 토큰에 포함
  • 토큰 탈취 시 보안 문제 가능
  • JWT 동작 방식:
    • 로그인 시 서버가 JWT 생성, 클라이언트 전달
    • 클라이언트가 로컬/세션 스토리지에 저장
    • 요청 시 JWT 헤더에 포함 전송
    • 서버가 토큰 검증 후 처리
  • JWT 구조:
    • Header.Payload.Signature 형태
    • Header: 토큰 타입, 알고리즘
    • Payload: 사용자 정보
    • Signature: 무결성 검증용 서명

4. 세션 vs 쿠키 vs JWT 비교

항목세션(Session)쿠키(Cookie)JWT (JSON Web Token)
저장 위치서버클라이언트(브라우저)클라이언트(브라우저)
보안높음(서버 관리)낮음(조작 가능)중간(서명으로 검증)
성능서버 부담 있음클라이언트 부담서버 부담 없음
인증 방식세션 ID로 확인쿠키에 인증 정보 저장토큰 자체 인증
상태상태 유지 (Stateful)상태 유지 (Stateful)무상태 (Stateless)
데이터 크기작음제한적 (4KB)비교적 큼

5. 어떤 걸 선택할까?

  • 세션 적합: 보안 중요할 때 (예: 은행, 관리자 페이지)
  • 쿠키 적합: 간단한 사용자 설정 저장 (예: 다크 모드, 언어 설정)
  • JWT 적합: REST API, 모바일/웹 통합 인증 필요할 때

결론

세션, 쿠키, JWT 각자 장단점 있음. 목적과 환경에 맞게 선택하면 됨. 보안 중요하면 세션, 성능 필요하면 JWT, 간단한 설정엔 쿠키 사용 추천.

profile
화이팅

0개의 댓글