Атрибуты файлов cookie,Атрибуты файлов cookie

Когда веб-сервер отвечает на запрос ресурса, сервер может включать заголовок Set-Cookie вместе со своим ответом. Этот заголовок сообщает вашему браузеру, что нужно сохранить файл cookie. Например: Set-Cookie:cat=tabby . Что такое файлы cookie? объясняет, как работают файлы cookie.

Помимо предоставления имени и значения файла cookie, Set-Cookie может включать атрибуты, позволяющие контролировать установку файлов cookie и срок их действия. Атрибуты файлов cookie разделяются точкой с запятой. Например:

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

В этой статье объясняются наиболее важные атрибуты файлов cookie:

Использование файлов cookie HTTP объясняет атрибуты файлов cookie более подробно с технической точки зрения.

Безопасный

👉 Вы должны включить Secure по умолчанию для всех файлов cookie.

Если заголовок Set-Cookie включает Secure , файл cookie будет включаться только в зашифрованные запросы, использующие протокол HTTPS: файл cookie не будет включаться в HTTP-запросы. Это может помочь остановить промежуточные атаки , когда злоумышленник тайно вмешивается в обмен данными между браузером и сервером, чтобы передать информацию и потенциально изменить ее.

HTTPOnly

👉 По умолчанию для всех файлов cookie следует включить HTTPOnly . Опустите только в том случае, если вам нужен доступ к JavaScript.

Если заголовок Set-Cookie включает HTTPOnly , доступ к файлу cookie с помощью document.cookie невозможен. Это помогает защититься от определенных типов атак, нацеленных на файлы cookie.

Тот же сайт

👉 SameSite=Lax — значение по умолчанию, если значение не установлено. SameSite=None разрешает использование межсайтовых файлов cookie, но означает, что файлы cookie будут блокироваться там, где действуют ограничения на использование сторонних файлов cookie.

Запрос ресурса с сайта, отличного от сайта, который вы посещаете, является межсайтовым запросом. Файл cookie, установленный в ответ на межсайтовый запрос, называется сторонним файлом cookie . Узнайте больше: Что такое сторонние файлы cookie?

Атрибут SameSite определяет, будет ли сторонний файл cookie включаться в запрос. Он имеет три возможных значения: Strict , Lax или None .

Строгий

Файл cookie будет отправляться только в ответ на запросы со страницы, находящейся на исходном сайте файла cookie. Например: представьте, что пользователь посещает cats.example и имеет набор файлов cookie с атрибутом SameSite=Strict . Позже пользователь оказывается на другом сайте и переходит по ссылке на страницу cats.example . Установленный файл cookie не будет включен в этот запрос.

Лакс

Это работает так же, как Strict , за исключением того, что браузер также включает файл cookie, когда пользователь переходит по ссылке на исходный сайт файла cookie. (В предыдущем примере Strict файл cookie будет включен, когда пользователь перейдет по ссылке на cats.example .) Lax используется по умолчанию, если в заголовок Set-Cookie не включен атрибут SameSite .

Никто

Никаких ограничений: файл cookie будет включен в запрос независимо от того, является ли он межсайтовым. При использовании SameSite=None файл cookie также должен иметь атрибут Secure .

Узнайте больше: объяснение файлов cookie SameSite .

Разделенный

👉 Вам следует включить атрибут Partitioned по умолчанию, если вы создаете сторонний файл cookie, если только вы явно не знаете, что его необходимо использовать совместно с несколькими встраиваниями.

Этот атрибут позволяет вам выбрать использование файлов cookie в секционированном хранилище с отдельной «банкой файлов cookie» для каждого сайта верхнего уровня. Файл cookie имеет двойной ключ: для сайта верхнего уровня, а также для домена, который его устанавливает.

Например: представьте, что веб-сайт A и веб-сайт B включают iframe с веб-сайта C. Разделенный файл cookie, установленный iframe на веб-сайте A, не может быть доступен iframe на веб-сайте B: файл cookie AC отделен от файла cookie BC.

Диаграмма, показывающая, что два разных веб-сайта имеют общий сторонний   больше не будет передавать файлы cookie этой третьей стороне.
При разделении файлов cookie сторонняя служба, которая устанавливает файл cookie при внедрении на один сайт верхнего уровня, не может получить доступ к этому же файлу cookie, когда служба встроена в другие сайты верхнего уровня.

Файлы cookie с атрибутом Partitioned известны как CHIPS: файлы cookie с независимым разделенным состоянием.

Разделенные файлы cookie должны иметь атрибут Secure .

Узнайте больше: Файлы cookie с независимым разделенным состоянием .

Срок действия и максимальный возраст

👉 Оставьте атрибуты Max-Age и Expires если вам не нужно, чтобы файл cookie сохранялся дольше, чем текущий сеанс. Срок действия файлов cookie в браузерах истекает , поэтому нет смысла устанавливать срок действия на несколько лет вперед. Вместо этого вам следует рассмотреть возможность обновления файлов cookie, когда пользователь повторно посещает ваш сайт.

Вы можете указать дату и время Expires или Max-Age в секундах, после чего файл cookie должен быть удален и больше не отправляться. Например:

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

Если вы не укажете атрибут Max-Age или Expires , файл cookie будет удален после завершения текущего сеанса. Этот тип файлов cookie иногда называют сеансовыми файлами cookie .

Домен

👉 Если вам не нужно включать файл cookie в запросы к поддоменам, не включайте атрибут Domain .

Если заголовок Set-Cookie имеет атрибут Domain , файл cookie будет включен в запросы к указанному домену и любому из его поддоменов.

Если заголовок Set-Cookie не имеет атрибута Domain , файл cookie не будет включаться в запросы к поддоменам.

Другими словами, включение атрибута Domain снижает ограничения домена.

Например, ответ с сайта cats.example :

  • Set-Cookie:cat=tabby
    Файл cookie будет включен только в запросы к cats.example
  • Set-Cookie:cat=tabby; Domain=cats.example
    Файл cookie будет включен в запросы к cats.example , а также в любые запросы ресурсов на поддоменах, таких как fluffy.cats.example или user.assets.cats.example

Путь

👉 Включите Path=/ в файл cookie, если вам нужно, чтобы все запросы к любому пути на вашем сайте включали файл cookie. Не полагайтесь на Path для защиты безопасности .

Если атрибут Path включен в заголовок ответа Set-Cookie , установленный файл cookie будет включаться только в запросы к URL-адресам (на сайте, на котором установлен файл cookie!), которые соответствуют значению Path .

Например:

  • Set-Cookie:cat=tabby; Path=/articles
    Файл cookie будет включен для запроса любого URL-адреса, начинающегося с /articles :
    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-адресу на сайте будут включать файл cookie.

Если заголовок ответа Set-Cookie не имеет значения Path , файл cookie будет включаться только в запросы к тому же каталогу. Например, представьте, что файл cookie cat=tabby устанавливается в ответ на запрос cats.example/images/tabby.jpg. Если Path не указан, файл cookie будет включаться только в запросы к файлам в каталоге cats.example/images .

Демо

  • 1pc.glitch.me : демо-версия собственных файлов cookie.
  • 3pc.glitch.me : демонстрация сторонних файлов cookie.

Инструменты

Узнать больше

,

Когда веб-сервер отвечает на запрос ресурса, сервер может включать заголовок Set-Cookie вместе со своим ответом. Этот заголовок сообщает вашему браузеру, что нужно сохранить файл cookie. Например: Set-Cookie:cat=tabby . Что такое файлы cookie? объясняет, как работают файлы cookie.

Помимо предоставления имени и значения файла cookie, Set-Cookie может включать атрибуты, позволяющие контролировать установку файлов cookie и срок их действия. Атрибуты файлов cookie разделяются точкой с запятой. Например:

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

В этой статье объясняются наиболее важные атрибуты файлов cookie:

Использование файлов cookie HTTP объясняет атрибуты файлов cookie более подробно с технической точки зрения.

Безопасный

👉 Вы должны включить Secure по умолчанию для всех файлов cookie.

Если заголовок Set-Cookie включает Secure , файл cookie будет включаться только в зашифрованные запросы, использующие протокол HTTPS: файл cookie не будет включаться в HTTP-запросы. Это может помочь остановить промежуточные атаки , когда злоумышленник тайно вмешивается в обмен данными между браузером и сервером, чтобы передать информацию и потенциально изменить ее.

HTTPOnly

👉 По умолчанию для всех файлов cookie следует включить HTTPOnly . Опустите только в том случае, если вам нужен доступ к JavaScript.

Если заголовок Set-Cookie включает HTTPOnly , доступ к файлу cookie с помощью document.cookie невозможен. Это помогает защититься от определенных типов атак, нацеленных на файлы cookie.

Тот же сайт

👉 SameSite=Lax — значение по умолчанию, если значение не установлено. SameSite=None разрешает использование межсайтовых файлов cookie, но означает, что файлы cookie будут блокироваться там, где действуют ограничения на использование сторонних файлов cookie.

Запрос ресурса с сайта, отличного от сайта, который вы посещаете, является межсайтовым запросом. Файл cookie, установленный в ответ на межсайтовый запрос, называется сторонним файлом cookie . Узнайте больше: Что такое сторонние файлы cookie?

Атрибут SameSite определяет, будет ли сторонний файл cookie включаться в запрос. Он имеет три возможных значения: Strict , Lax или None .

Строгий

Файл cookie будет отправляться только в ответ на запросы со страницы, находящейся на исходном сайте файла cookie. Например: представьте, что пользователь посещает cats.example и имеет набор файлов cookie с атрибутом SameSite=Strict . Позже пользователь оказывается на другом сайте и переходит по ссылке на страницу cats.example . Установленный файл cookie не будет включен в этот запрос.

Лакс

Это работает так же, как Strict , за исключением того, что браузер также включает файл cookie, когда пользователь переходит по ссылке на исходный сайт файла cookie. (В предыдущем примере Strict файл cookie будет включен, когда пользователь перейдет по ссылке на cats.example .) Lax используется по умолчанию, если в заголовок Set-Cookie не включен атрибут SameSite .

Никто

Никаких ограничений: файл cookie будет включен в запрос независимо от того, является ли он межсайтовым. При использовании SameSite=None файл cookie также должен иметь атрибут Secure .

Узнайте больше: объяснение файлов cookie SameSite .

Разделенный

👉 Вам следует включить атрибут Partitioned по умолчанию, если вы создаете сторонний файл cookie, если только вы явно не знаете, что его необходимо использовать совместно с несколькими встраиваниями.

Этот атрибут позволяет вам выбрать использование файлов cookie в секционированном хранилище с отдельной «банкой файлов cookie» для каждого сайта верхнего уровня. Файл cookie имеет двойной ключ: для сайта верхнего уровня, а также для домена, который его устанавливает.

Например: представьте, что веб-сайт A и веб-сайт B включают iframe с веб-сайта C. Разделенный файл cookie, установленный iframe на веб-сайте A, не может быть доступен iframe на веб-сайте B: файл cookie AC отделен от файла cookie BC.

Диаграмма, показывающая, что два разных веб-сайта имеют общий сторонний   больше не будет передавать файлы cookie этой третьей стороне.
При разделении файлов cookie сторонняя служба, которая устанавливает файл cookie при внедрении на один сайт верхнего уровня, не может получить доступ к этому же файлу cookie, когда служба встроена в другие сайты верхнего уровня.

Файлы cookie с атрибутом Partitioned известны как CHIPS: файлы cookie с независимым разделенным состоянием.

Разделенные файлы cookie должны иметь атрибут Secure .

Узнайте больше: Файлы cookie с независимым разделенным состоянием .

Срок действия и максимальный возраст

👉 Оставьте атрибуты Max-Age и Expires если вам не нужно, чтобы файл cookie сохранялся дольше, чем текущий сеанс. Срок действия файлов cookie в браузерах истекает , поэтому нет смысла устанавливать срок действия на несколько лет вперед. Вместо этого вам следует рассмотреть возможность обновления файлов cookie, когда пользователь повторно посещает ваш сайт.

Вы можете указать дату и время Expires или Max-Age в секундах, после чего файл cookie должен быть удален и больше не отправляться. Например:

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

Если вы не укажете атрибут Max-Age или Expires , файл cookie будет удален после завершения текущего сеанса. Этот тип файлов cookie иногда называют сеансовыми файлами cookie .

Домен

👉 Если вам не нужно включать файл cookie в запросы к поддоменам, не включайте атрибут Domain .

Если заголовок Set-Cookie имеет атрибут Domain , файл cookie будет включен в запросы к указанному домену и любому из его поддоменов.

Если заголовок Set-Cookie не имеет атрибута Domain , файл cookie не будет включаться в запросы к поддоменам.

Другими словами, включение атрибута Domain снижает ограничения домена.

Например, с ответом с сайта cats.example :

  • Set-Cookie:cat=tabby
    Файл cookie будет включаться только в запросы к cats.example
  • Set-Cookie:cat=tabby; Domain=cats.example
    Файл cookie будет включен в запросы к cats.example , а также в любые запросы ресурсов на поддоменах, таких как fluffy.cats.example или user.assets.cats.example

Путь

👉 Включите Path=/ в файл cookie, если вам нужно, чтобы все запросы к любому пути на вашем сайте включали файл cookie. Не полагайтесь на Path для защиты безопасности .

Если атрибут Path включен в заголовок ответа Set-Cookie , установленный файл cookie будет включаться только в запросы к URL-адресам (на сайте, на котором установлен файл cookie!), которые соответствуют значению Path .

Например:

  • Set-Cookie:cat=tabby; Path=/articles
    Файл cookie будет включен для запроса любого URL-адреса, начинающегося с /articles :
    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-адресу на сайте будут включать файл cookie.

Если заголовок ответа Set-Cookie не имеет значения Path , файл cookie будет включаться только в запросы к тому же каталогу. Например, представьте, что файл cookie cat=tabby устанавливается в ответ на запрос cats.example/images/tabby.jpg. Если Path не указан, файл cookie будет включаться только в запросы к файлам в каталоге cats.example/images .

Демо

  • 1pc.glitch.me : демо-версия собственных файлов cookie.
  • 3pc.glitch.me : демонстрация сторонних файлов cookie.

Инструменты

Узнать больше