쿠키 속성

웹 서버가 리소스 요청에 응답할 때 서버는 응답과 함께 Set-Cookie 헤더를 포함할 수 있습니다. 이 헤더는 브라우저에 쿠키를 저장하도록 지시합니다.

예: Set-Cookie:cat=tabby

쿠키 이름과 값을 제공하는 것 외에도 Set-Cookie에는 쿠키가 설정되는지 여부와 만료 시점을 제어하는 속성이 포함될 수 있습니다. 쿠키 속성은 세미콜론으로 구분됩니다. 예:

    Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

이 문서에서는 가장 중요한 쿠키 속성을 설명합니다.

HTTP 쿠키 사용 에서는 쿠키 속성을 더 자세히 기술적으로 설명합니다.

보안

Set-Cookie 헤더에 Secure가 포함된 경우 쿠키는 HTTPS 프로토콜을 사용하는 암호화된 요청에만 포함됩니다. 쿠키는 HTTP 요청에 포함되지 않습니다. 이렇게 하면 공격자가 브라우저와 서버 간의 통신에 비밀리에 개입하여 정보를 전달하고 잠재적으로 변경하는 중간자 공격을 방지할 수 있습니다.

HTTPOnly

Set-Cookie 헤더에 HTTPOnly가 포함된 경우 JavaScript는 document.cookie를 사용하는 등의 방법으로 쿠키에 액세스할 수 없습니다. 이렇게 하면 쿠키를 타겟팅하는 특정 유형의 공격으로부터 보호할 수 있습니다.

SameSite

방문 중인 사이트와 다른 사이트의 리소스 요청은 크로스 사이트 요청입니다. 크로스 사이트 요청에 대한 응답으로 설정된 쿠키는 서드 파티 쿠키 입니다.

SameSite 속성은 서드 파티 쿠키가 요청에 포함되는지 여부를 제어합니다. 가능한 값은 Strict, Lax, None의 세 가지입니다.

자세히 알아보기: 서드 파티 쿠키란 무엇인가요?

엄격

쿠키는 쿠키의 출처 사이트에 있는 페이지의 요청에 대한 응답으로만 전송됩니다. 예를 들어 사용자가 cats.example을 방문하고 SameSite=Strict 속성으로 설정된 쿠키가 있다고 가정해 보겠습니다. 나중에 사용자가 다른 사이트에 있고 cats.example의 페이지로 연결되는 링크를 클릭합니다. 설정된 쿠키는 해당 요청에 포함되지 않습니다.

느슨함

이 기능은 Strict와 동일하게 작동하지만 사용자가 쿠키의 출처 사이트로 연결되는 링크를 클릭할 때 브라우저에 쿠키도 포함됩니다. (이전의 Strict 예에서 사용자가링크를 클릭하면 쿠키가 포함됩니다.) Lax가 기본값입니다. Set-Cookie 헤더에 SameSite 속성이 포함되지 않은 경우입니다.cats.example

없음

제약조건 없음: 쿠키는 크로스 사이트인지 여부와 관계없이 요청에 포함됩니다. SameSite=None을 사용하면 쿠키에 Secure 속성도 있어야 합니다.

분할됨

이 속성을 사용하면 최상위 사이트마다 별도의 "쿠키 집합"이 있는 분할된 스토리지에 쿠키를 선택할 수 있습니다. 쿠키는 최상위 사이트와 쿠키를 설정하는 도메인 모두에서 이중 키로 설정됩니다.

예를 들어 웹사이트 A와 웹사이트 B 모두 웹사이트 C의 iframe을 포함한다고 가정해 보겠습니다. 웹사이트 A의 iframe에서 설정한 분할된 쿠키는 웹사이트 B의 iframe에서 액세스할 수 없습니다. AC 쿠키는 BC 쿠키와 분리되어 있습니다.

공통 서드 파티를 삽입하는 두 개의 서로 다른 웹사이트가 더 이상 해당 서드 파티의 쿠키를 공유하지 않음을 보여주는 다이어그램
쿠키 파티셔닝을 사용하면 하나의 최상위 사이트에 삽입될 때 쿠키를 설정하는 서드 파티 서비스가 서비스가 다른 최상위 사이트에 삽입될 때 동일한 쿠키에 액세스할 수 없습니다.

Partitioned 속성이 있는 쿠키를 CHIPS(Cookies Having Independent Partitioned State)라고 합니다.

분할된 쿠키에는 Secure 속성이 있어야 합니다.

자세히 알아보기: Cookies Having Independent Partitioned State

만료 예정 및 최대 수명

Expires 날짜 및 시간 또는 Max-Age(초)를 지정할 수 있습니다. 이 날짜 및 시간이 지나면 쿠키가 삭제되고 더 이상 전송되지 않습니다. 예:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

Max-Age 또는 Expires 속성을 지정하지 않으면 현재 세션이 종료될 때 쿠키가 삭제됩니다. 이러한 종류의 쿠키를 세션 쿠키 라고도 합니다.

도메인

Set-Cookie 헤더에 Domain 속성이 있는 경우 쿠키는 지정된 도메인 및 하위 도메인에 대한 요청에 포함됩니다.

Set-Cookie 헤더에 Domain 속성이 없는 경우 쿠키는 하위 도메인에 대한 요청에 포함되지 않습니다.

즉, Domain 속성을 포함하면 도메인 제한이 줄어듭니다.

예를 들어 웹사이트 cats.example의 응답을 사용합니다.

  • Set-Cookie:cat=tabby
    쿠키는 cats.example에 대한 요청에만 포함됩니다.
  • Set-Cookie:cat=tabby; Domain=cats.example
    쿠키는 cats.example에 대한 요청과 fluffy.cats.example 또는 user.assets.cats.example와 같은 하위 도메인의 리소스 요청에 포함됩니다.

경로

Path 속성이 Set-Cookie 응답 헤더에 포함된 경우 설정된 쿠키는 Path 값과 일치하는 쿠키를 설정한 사이트의 URL에 대한 요청에만 포함됩니다.

예:

  • Set-Cookie:cat=tabby; Path=/articles
    쿠키는 /articles로 시작하는 모든 URL 경로에 대한 요청에 포함됩니다.
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    사이트의 모든 URL에 대한 모든 요청에 쿠키가 포함됩니다.

Set-Cookie 응답 헤더에 Path 값이 없는 경우 쿠키는 동일한 디렉터리에 대한 요청에만 포함됩니다. 예를 들어 cat=tabby 쿠키가 cats.example/images/tabby.jpg. 요청에 대한 응답으로 설정된다고 가정해 보겠습니다. Path가 설정되지 않은 경우 쿠키는 cats.example/images 디렉터리 내의 파일 요청에만 포함됩니다.

데모

도구

자세히 알아보기