쿠키, 세션, JWT

오정빈·2025년 10월 22일

내일배움캠프

목록 보기
19/22

쿠키, 세션, JWT

2025.10.23

쿠키(Cookie), 세션(Session), JWT(Json Web Token) 정리


개념:
클라이언트(웹 브라우저)에 저장되는 작은 데이터 파일로, 사용자의 상태나 설정 정보를 저장하기 위해 사용됩니다.

주요 특징:

  • 서버가 브라우저에 전달하고, 브라우저가 이를 저장함.
  • 이후 요청 시 자동으로 쿠키를 포함해 서버에 전송.
  • 주로 로그인 유지, 팝업 미표시 설정, 장바구니 정보 등에 사용됨.

구성 요소:
| 항목 | 설명 |
|------|------|
| Name | 쿠키 이름 (고유 식별자) |
| Value | 쿠키 값 |
| Domain | 쿠키가 적용되는 도메인 |
| Path | 쿠키가 적용되는 경로 |
| Expires | 만료 시점 (없으면 세션 쿠키로 브라우저 종료 시 삭제) |

저장 위치: 클라이언트(웹 브라우저)

만료 시점: 쿠키 생성 시 지정 가능 (브라우저 종료 후에도 유지 가능)

보안: 취약 (클라이언트에서 쉽게 접근 가능)


세션 (Session)

개념:
서버에서 일정 시간 동안 클라이언트의 상태를 유지하기 위해 사용하는 기술입니다.

주요 특징:

  • 서버가 클라이언트마다 고유한 세션 ID를 발급.
  • 해당 ID는 쿠키 형태로 클라이언트에 저장되어 요청 시 서버가 이를 이용해 클라이언트를 식별.
  • 로그인 정보 등 민감한 데이터를 서버에 저장하기 때문에 보안성이 높음.

동작 방식:
1. 클라이언트가 서버에 요청을 보냄.
2. 서버가 세션을 생성하고 세션 ID를 클라이언트에 전달.
3. 클라이언트는 세션 ID를 쿠키로 저장.
4. 이후 요청마다 쿠키에 담긴 세션 ID를 함께 전송.
5. 서버는 세션 ID로 클라이언트를 식별하여 동일 사용자임을 인식.

저장 위치: 서버

만료 시점:

  • 브라우저 종료 시
  • 클라이언트 로그아웃 시
  • 서버에서 설정한 유효시간 만료 시

보안: 비교적 안전 (서버 저장 방식)


JWT (Json Web Token)

개념:
서버가 클라이언트를 인증하기 위해 JSON 형태로 인코딩된 토큰을 발급하고, 클라이언트가 이를 직접 보관하는 무상태(stateless) 인증 방식입니다.

주요 특징:

  • 인증 정보가 서버가 아닌 토큰 내부에 포함됨.
  • 서버는 요청 시 토큰의 서명을 검증해 신뢰할 수 있는 사용자임을 확인.
  • 세션과 달리 서버에 상태 정보를 저장하지 않음 → 확장성 우수.

구조:
JWT는 3부분으로 구성됩니다.

Header.Payload.Signature
구성내용
Header알고리즘 및 토큰 타입 정보 (예: HS256, JWT)
Payload사용자 정보 및 토큰 만료 시간 등의 데이터
SignatureHeader + Payload를 비밀키로 서명한 값

동작 방식:
1. 사용자가 로그인 요청을 보냄.
2. 서버가 사용자 인증 후 JWT를 생성하여 클라이언트에 전달.
3. 클라이언트는 JWT를 LocalStorage 또는 쿠키에 저장.
4. 이후 요청 시 Authorization: Bearer <JWT> 헤더로 전달.
5. 서버는 토큰 서명을 검증하여 사용자 식별.

저장 위치: 클라이언트 (LocalStorage, SessionStorage, 또는 쿠키)

만료 시점: 토큰 내부 exp(만료 시간) 필드로 지정.

보안: 안전하지만 토큰 탈취 시 재발급 필요 (서버가 상태를 저장하지 않기 때문)


쿠키, 세션, JWT 비교 요약

구분쿠키 (Cookie)세션 (Session)JWT (Json Web Token)
설명브라우저에 저장되는 작은 데이터 파일서버가 클라이언트 상태를 유지하기 위한 기술클라이언트가 인증 정보를 직접 보관하는 토큰 방식
저장 위치클라이언트(브라우저)서버클라이언트(LocalStorage, 쿠키 등)
유형상태 유지용상태 유지용무상태(Stateless) 인증
사용 예시팝업 미표시, 자동 로그인로그인 세션 유지API 인증, OAuth 인증
만료 시점설정 가능 (영구/세션)서버 설정 시간, 브라우저 종료 시토큰 내부 exp 필드로 지정
보안성취약 (변조/탈취 위험)안전 (서버 저장)비교적 안전하지만 탈취 시 위험
서버 부하없음높음 (모든 세션 관리 필요)낮음 (서버 상태 저장 불필요)
확장성보통낮음 (세션 공유 필요)매우 높음
대표 저장 데이터사용자 설정 정보로그인 상태사용자 인증 토큰

정리 요약

  • 쿠키: 클라이언트 중심, 단순 데이터 저장
  • 세션: 서버 중심, 로그인 상태 유지
  • JWT: 무상태 인증, 서버 부담 감소 및 확장성 향상

0개의 댓글