HTTP는 Stateless(무상태) 프로토콜이기 때문에 서버는 요청을 보낸 사용자가 누구인지 알 수 없습니다.
이를 해결하기 위해 가장 널리 사용되는 기술이 바로 쿠키(Cookie)입니다.
쿠키는 웹 브라우저가 저장하는 작은 데이터 조각이며, 브라우저는 매 요청마다 자동으로 해당 쿠키를 서버로 전송한다.
따라서 서버는 브라우저가 보내는 쿠키를 확인해 사용자를 식별할 수 있다.
1. 서버가 응답할 때 쿠키를 설정
Set-Cookie: sessionId=adfasdf; Expires=Sat, 26 Dec 2025 00:00:00 GMT; Path=/; Domain=google.com; Secure
2. 브라우저는 쿠키를 저장한다.
3. 이후 해당 도메인의 요청은 항상 쿠키를 포함한다.
Cookie: sessionId=adfasdf
• 로그인 상태 유지(세션 ID 저장)
• 광고/트래킹 정보 저장
• 간단한 사용자 상태 관리
• 장바구니 데이터 유지 등
쿠키는 매우 중요한 특징이 있다:
브라우저는 모든 요청마다 쿠키를 서버에 자동 포함한다.
→ 결과적으로
• 네트워크 트래픽 증가
• 개인 정보 노출 위험 증가
따라서 민감한 정보는 쿠키에 절대 저장하면 안 된다.
(예: 비밀번호, 주민번호, 카드번호 등)
쿠키에는 최소한의 정보(PK, 세션 ID, 인증 토큰 등)만 저장해야 한다.
만약 서버로 보내지 않고 브라우저 내부에만 저장하고 싶다면
→ Web Storage(LocalStorage / SessionStorage)를 사용해야 한다.
Expires / Max-Age
• Expires: 절대 시간 (해당 시간이 되면 쿠키 삭제)
• Max-Age: 쿠키 유지 시간(초 단위)
• Max-Age=0 또는 음수 → 쿠키 삭제
세션 쿠키(Session Cookie)
• Expires/Max-Age 생략
• 브라우저 창을 닫을 때 삭제됨
영속 쿠키(Persistent Cookie)
• Expires 또는 Max-Age 지정
• 지정된 날짜까지 유지됨
Domain
• 쿠키가 적용되는 도메인 지정
• 예:
Domain=google.com → google.com + 모든 서브도메인에서 사용 가능
• 생략하면 현재 문서 도메인에서만 적용
Path
• 쿠키가 전송되는 경로
• 기본적으로 Path=/ 로 설정하여 전체 경로에서 사용하도록 설정
Secure
• HTTPS에서만 전송됨
• HTTP에서는 전송되지 않음
HttpOnly
• JavaScript에서 쿠키 접근 불가
• XSS 공격 방지용
SameSite
• CSRF 공격 방지용 정책
• Lax / Strict / None 설정 가능
• 서버가 Set-Cookie로 브라우저에 저장
• 브라우저는 모든 요청에 쿠키를 자동 포함
• 민감 정보 저장 금지
• 로그인/세션유지/트래킹 등에 사용
• 보안 속성(secure, httpOnly, sameSite)을 반드시 설정해야 함