Начиная с 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.