
웹 개발에서 사용자 인증과 상태 유지를 위해 쿠키, 세션, 토큰을 사용합니다.
각각의 개념과 차이점을 명확히 이해하면 보안과 사용자 경험을 개선해 보아요!
클라이언트(브라우저)에 저장되는 작은 데이터 조각입니다.
주로 서버가 클라이언트에 정보를 저장하도록 지시해요!
다음 요청 시 클라이언트가 쿠키를 자동으로 요청 헤더에 포함하여
사용자의 정보 및 설정을 서버에 알려요!
만료 기간 설정 가능 (영구 저장 or 세션 종료 시 삭제)
JavaScript로 접근 가능 (보안 이슈 발생 가능)
브라우저 별로 관리됨
자동 로그인 기능
최근 본 상품 저장
다크&라이트 모드 설정 저장 등
서버에서 생성되어 서버에 저장되는 사용자 상태 정보입니다.
클라이언트는 세션 ID를 쿠키로 저장하고 서버에 전달하여
서버가 어떤 사용자인지를 인증해요!
서버 자원 사용 (메모리나 Redis 등)
클라이언트는 세션 ID만 있으면 된다.
일정 시간 사용 없을 시 자동 만료됨.
로그인 상태 유지
사용자 임시 장바구니 정보 저장
사용자 인증 정보를 담은 문자열 (주로 JWT 형태 사용) 입니다!
주로 Stateless한 인증(상태 정보를 저장 안하는) 방식에서 사용해요!
Authorization 헤더 또는 쿠키에 포함하여 서버에 전달해요!
서버는 토큰만 검증, 세션/DB 불필요 (Stateless)
보통 만료 시간이 포함되고 서명되어 위변조 방지
쿠키/로컬스토리지 등 원하는 위치에 저장 가능
모바일/SPA 환경에서 로그인 인증
마이크로서비스 간 인증 정보 전달
| 항목 | 저장 위치 | 보안 수준 | 서버 의존 | 주로 쓰이는 곳 |
|---|---|---|---|---|
| 쿠키 | 클라이언트(브라우저) | 낮음 | 없음 | 간단한 사용자 설정 저장 |
| 세션 | 서버 | 중간 | 있음 | 로그인, 장바구니 등 |
| 토큰 (JWT) | 클라이언트 (쿠키/로컬 등) | 높음 | 없음 (Stateless) | 모바일, SPA 인증 시스템 등 |
어디에서 어떤 정보를 저장하느냐에 따라서
사용하는 종류와 방법이 달라요!
현재 진행하는 프로젝트에 맞는 형태로 알맞게 사용하는것이 중요합니다!