Cookie는 서버가 클라이언트에 저장하라고 보내는 Key-Value 쌍의 작은 데이터 조각 HTTP 응답의 Set-Cookie 헤더를 통해 클라이언트에 전달되고, 브라우저에 저장 브라우저는 동일 서버에 재요청할 때 Cookie 헤더에 포함해 자동으로 서버에 전송
서버가 사용자의 브라우저에 저장하는 Key-Value 쌍의 데이터 조각
저장 위치 : 클라이언트
저장 방식
HTTP 응답의 Header (set-cookie)에 담겨 클라이언트로 전송
브라우저 저장
동일 도메인에 요청할 때 자동으로 쿠키 내용이 Header에 포함
사용 목적
사용자 인증 상태 유지
환경설정
광고, 트래킹 및 방문 이력
오늘 이 창 다시 보지 않기, 자동 로그인 등
유효기간
session cookie : 브라우저 종료시 소멸
persistent cookie : 만료 시각 지정, 파일로 영구 저장 가능
보안
Http Only
자바스크립트로 쿠키 접근 불가
민감한 인증 정보에는 반드시 적용
Same Site (CSRF 방지)
Strict : 타 사이트 요청에는 쿠키 안보냄
Lax : 안전한 방법(Get 등)으로만 제한적 전송
None : 크로스 도메인 필요 시 사용, 반드시 Secure와 함께 사용
Secure
HTTPS 연결에서만 쿠키 전송하도록 제한
세션
세션은 사용자의 로그인 등 상태 정보를 서버에서 관리하기 위한 저장 공간 서버가 각 사용자에게 고유한 세션 ID를 부여하고 정보를 서버에 저장 세션 ID를 cookie에 담아 클라이언트에 전달 브라우저가 요청을 보낼 때 마다 세션 ID를 함께 보냄 → 서버는 사용자 구분 가능
서버가 사용자의 상태를 서버 측 메모리 / 스토리지에 저장
저장 위치 : 서버
인증 흐름
서버는 사용자 식별하면 서버 메모리에 세션 객체 생성
고유한 session ID 발급, 클라이언트에 쿠키로 전달
클라이언트는 이후 요청마다 session-id를 쿠키에 포함해 전송
서버는 session-id를 통해 해당 세션 정보를 찾아 인증
유효기간 : 서버에서 세션 만료 시간 관리, 브라우저 종료시 일반적으로 소멸
토큰
토큰은 인증 정보를 암호화한 문자열 사용자의 신원을 증명하거나 권한을 부여하는 데 사용되는 데이터 서버가 사용자를 인증한 뒤, 토큰을 클라이언트에 발급하여 저장 사용자가 요청을 보낼때마다 토큰을 함께 전송 서버는 별도 상태 저장 없이 사용자를 식별하여 안전하게 서비스 제공
인증 정보를 암호화된 문자열(토큰)로 만들어 클라이언트에 전달, 상태 비저장 인증방식
구조 : Header, Payloads, Signature
동작 방식
서버에서 클라이언트 인증시 JWT 생성, 전달
클라이언트는 서버 요청 시 JWT를 항상 첨부
서버는 토큰 자체로 신원 판별, 별도 저장/조회 작업 불필요
JWT 기반 인증 구조 – Access Token과 Refresh Token을 활용해 클라이언트, 서버, DB 간 인증 정보를 안전하게 주고받는 방식