Cookie

Formats

개요

쿠키는 서버가 `Set-Cookie` 헤더로 브라우저에 저장시키는 작은 키·값 데이터로, 이후 같은 사이트로의 요청마다 `Cookie` 헤더에 자동으로 실려 전송됩니다.

무상태인 HTTP 위에서 로그인 세션 유지, 사용자 식별, 설정 저장 등 '상태'를 구현하는 대표적 수단입니다.

자세히

쿠키의 속성이 보안을 좌우합니다. `HttpOnly`는 자바스크립트의 `document.cookie` 접근을 막아 XSS로 쿠키(세션 토큰)를 훔쳐가는 것을 방지하고, `Secure`는 HTTPS에서만 전송되게 합니다. `SameSite`는 교차 사이트 요청에 쿠키를 실을지 제어하는데(Strict/Lax/None), Lax·Strict는 CSRF를 크게 완화합니다(`SameSite=None`은 반드시 `Secure` 필요). `Domain`·`Path`로 전송 범위를, `Max-Age`/`Expires`로 수명을 정합니다.

쿠키의 '자동 전송' 특성이 양날의 검입니다. 편리하지만, 사용자가 악성 사이트에 있어도 브라우저가 대상 사이트 쿠키를 자동으로 붙여 보내므로 CSRF 공격의 근본 원인이 됩니다(SameSite·CSRF 토큰으로 방어). 또 쿠키의 범위 규칙은 오리진과 달라 서브도메인을 넘나들 수 있고 포트를 구분하지 않습니다. 세션 쿠키는 보통 서버 세션을 가리키는 불투명 ID를 담고(세션), 반대로 상태를 클라이언트에 두는 JWT를 쿠키에 담기도 합니다. 크기 제한(약 4KB)과 매 요청 전송 오버헤드 때문에 큰 데이터는 쿠키에 넣지 않습니다.

관련 타입