브라우저에 저장하는 데이터로서, 유저의 식별이나 편의제공을 위해 저장한다. stateless한 HTTP의 보안책으로 사용한다. 주요 사용처는 다음 3가지이다.
서버에서 Set-Cookie
로 쿠키값을 보낸다. 이 값을 브라우저는 저장하고 서버로 요청을 보낼 때 쿠키를 함께 보내게 된다.
세션쿠키의 경우 세션이 종료되면 사라지고 영속적인 쿠키의 경우 Expires
나 Max-age
를 통해 유효기간을 정할 수 있다.
domain: 쿠기를 보내는 도메인 이름. 이 도메인의 하단 도메인은 모두 보내게 된다.
path: 해당 경로와 그 내부 경로 모두 쿠키를 보내게 된다.
expires/Max-Age: 쿠키의 유효기간을 나타낸다.
HTTPOnly: XSS(cross-site Scripting)공격에 대비해, document.cookie
와 같은 API로 접근할 수 없는 쿠키
Secure: HTTPS와 같은 프로토콜에서만 전송되는 쿠키
SameSite: CSRF 공격에 대한 해결책으로 제시된다. (Strict, Lax을 장려)
SameSite 자사 쿠키와 동일 사이트 컨텍스트로 제한해야 하는지 여부를 선언하는데 사용. Strict: 자사 컨텍스트에서만 전송. (특정 링크를 통해 들어오는 경우(이메일), 적용안됨) Lax: 최상위 탐색과 함께 쿠키 전송함. 이미지 요청은 쿠키를 요청하지 않지만 사이트를 들어오면 쿠키를 만듬 None: 쿠키 안만듦. Secure 속성 필요.
용량: 4KB, 한 도메인에 20개 제한