Новое значение песочницы, позволяющее использовать файлы cookie того же сайта из Chrome 135.

Наталья Маркобородова
Natalia Markoborodova

Начиная с Chrome 135, вы можете использовать новое значение sandbox : allow-same-site-none-cookies . Если эта политика указана и сторонние файлы cookie недоступны, браузер будет отправлять файлы cookie SameSite=None только в HTTP-запросах, исходящих из сторонних изолированных iframe.

Что такое изолированный iframe?

Изолированные iframe — это iframe с особыми ограничениями. Они рассматриваются как имеющие null , непрозрачное происхождение. По умолчанию потенциально опасные функции, такие как скрипты, формы и всплывающие окна, недоступны в изолированных iframe.

Используйте атрибут sandbox , чтобы указать , какие функции должен быть доступен изолированному iframe. Например:

 <iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>

Песочница — это всегда хорошая идея, поскольку она позволяет вам детально выбирать разрешения, необходимые для успешной загрузки встроенного контента, одновременно ограничивая объем потенциальных эксплойтов.

Зачем нам нужна эта новая политика?

До введения allow-same-site-none-cookies вы могли настроить два сценария использования файлов cookie в изолированном iframe:

  • Без токена allow-same-origin в атрибуте sandbox источник iframe сериализуется как null , что делает все запросы от страницы «песочницы» межсайтовыми. В этом случае в запросы будут включены только файлы cookie с SameSite=None .
  • С помощью токена allow-same-origin в атрибуте sandbox запросы рассматриваются как исходящие из реального источника iframe, что позволяет отправлять файлы cookie с любым значением SameSite .

Если сторонние файлы cookie заблокированы, iframe в изолированной программной среде, в котором отсутствует allow-same-origin не сможет отправлять файлы cookie, если вы не включите allow-same-site-none-cookies .

iframe с allow-same-origin прежнему сможет включать файлы cookie в запросы того же сайта, даже если сторонние файлы cookie заблокированы. Однако весь исходный файл cookie будет подвержен потенциально вредоносной веб-активности.

Благодаря allow-same-site-none-cookies iframe может отправлять файлы cookie SameSite=None в HTTP-запросах, при этом потенциально конфиденциальные файлы cookie SameSite=Strict и SameSite=Lax не будут включены.

Практический пример

Рассмотрим сайт practice-coding.example , который позволяет пользователям создавать и запускать собственные проекты кодирования, а также встраивать код других пользователей. Чтобы использовать эту службу, пользователи должны войти в систему, в результате чего будет установлен файл cookie сеанса SameSite=Strict .

Другой пользователь создает проект practice-coding.example/cookie-theft , который другие пользователи могут неосознанно встроить в свои проекты как iframe. Если файлы cookie SameSite=Strict и SameSite=Lax подвергаются воздействию iframe practice-coding.example/cookie-theft , злоумышленник может украсть файлы cookie сеанса других пользователей.

В этом случае владелец сайта может захотеть ограничить доступ к потенциально конфиденциальным файлам cookie. Однако они все равно могут захотеть разрешить использование файлов cookie SameSite=None в изолированных iframe. Например, для iframe в песочнице practice-coding.example/coding-interview могут потребоваться файлы cookie SameSite=None , чтобы кандидаты могли повторно просмотреть свой код. allow-same-site-none-cookies предотвращает раскрытие всего файла cookie, в то же время выборочно разрешая необходимые файлы cookie SameSite=None .

Как разрешить только SameSite=None в собственных изолированных фреймах?

Чтобы включить файлы cookie SameSite=None в запросах от собственных изолированных страниц, укажите токен allow-same-site-none-cookies в теге iframe. Например:

 <iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>

Вы также можете установить политику allow-same-site-none-cookies с помощью HTTP-заголовка Content-Security-Policy :

Content-Security-Policy: sandbox allow-same-site-none-cookies;

Попробуйте сами с помощью нашей демо-версии .

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

Сообщите о проблеме , чтобы поделиться отзывами или сообщить о проблемах, или присоединитесь к обсуждению на GitHub.