Новое значение sandbox allow-same-site-none-cookies из 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 .

При заблокированных сторонних куки, изолированный iframe без allow-same-origin не сможет отправлять куки, если вы не включите параметр 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. Если в iframe practice-coding.example/cookie-theft будут доступны cookie-файлы с параметрами SameSite=Strict и SameSite=Lax , злоумышленник сможет украсть сессионные 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.