쿠키(Cookie)는 「서버가 클라이언트에 저장하라고 보내는 작은 데이터」입니다.
매 요청에 자동으로 같이 전송됩니다.
세션(Session)은 「쿠키에 식별자를 두고, 실제 데이터는 서버에 보관」하는 패턴입니다.
쿠키 동작.
서버가 응답에 Set-Cookie: session_id=abc123.
브라우저가 저장 → 같은 도메인의 다음 요청부터 Cookie: session_id=abc123 자동 첨부.
도메인·경로·만료시각·HttpOnly·Secure 같은 속성으로 동작 제어.
세션.
쿠키에는 짧은 식별자(session_id)만 두고, 실제 사용자 정보(user_id, 권한 등)는 서버 쪽 메모리·Redis·DB에 보관.
클라이언트는 식별자만 보냄, 서버가 그걸로 사용자 정보를 조회.
보안 속성 — 반드시 챙기세요.
HttpOnly: JavaScript에서 접근 불가(XSS 방어).
Secure: HTTPS에서만 전송(중간자 공격 방어).
SameSite=Lax 또는 Strict: CSRF 방어.
이걸 빠뜨리면 보안 취약점이 됩니다.
JWT vs 세션.
세션은 서버 상태가 있어 「로그아웃·강제 만료」가 쉬움.
JWT는 stateless라 확장성·마이크로서비스에 강함.
일반 웹앱은 세션, API·모바일·다중 서비스는 JWT가 흔한 선택.
한 줄 요약
세션·쿠키는 전통적 인증입니다.
쿠키 식별자 + 서버 측 사용자 정보 저장 패턴이 세션.
HttpOnly/Secure/SameSite 속성으로 보안 강화 필수.
더 알아볼 것
- XSS와 HttpOnly
- CSRF와 SameSite
- 세션 저장소 — Redis 패턴