Наборы собственных доменов

Механизм, позволяющий связанным доменным именам, имеющим общего владельца, объявлять принадлежность к одному и тому же источнику.

Published on Updated on

Translated to: English, Español, Português, 한국어, 中文, 日本語

Статус реализации

Зачем нужны наборы собственных доменов?

Веб-страницы состоят из контента из различных источников. Некоторый контент является собственным, т. е. загружается с основного сайта, на который зашел посетитель. Другой контент загружается из сторонних источников—это может быть реклама, встраиваемые медиаобъекты, а также общие ресурсы, такие как JavaScript-библиотеки из сетей доставки контента (CDN). Сторонние источники также могут сопоставлять активность пользователя на различных сайтах, используя такие механизмы, как файлы cookie.

Разработчики браузеров предлагают модели обеспечения конфиденциальности, ограничивающие доступ к личным данным пользователя в межсайтовом контексте. Однако у многих организаций есть связанные между собой сайты, расположенные на различных доменных именах, например версии для разных стран (такие как example.com и example.co.uk). Необходимо, чтобы доменные имена, связанные определенным образом (например, имеющие общего владельца), могли заявить о своей принадлежности к одному источнику, чтобы в тех случаях, когда происходит разграничение между собственными и сторонними доменами, такие домены воспринимались браузерами как собственные домены сайта.

Кроме того, любое решение должно быть устойчивым к злоупотреблению системой. Например, необходимо исключить возможность добавления организаций, включающих не связанные между собой сайты с разными владельцами, с целью получения привилегий собственного домена.

Как работают собственные наборы?

Сайт может объявить о том, что является участником (или владельцем) набора доменов, опубликовав файл манифеста, в котором описаны связи с другими доменами. Этот файл имеет формат JSON и располагается по адресу .well-known/first-party-set.

Предположим, нам нужно объединить a.example, b.example и c.example в набор собственных доменов, где a.example будет выступать в качестве владельца. Для этого сайты должны опубликовать следующие ресурсы:

// https://a.example/.well-known/first-party-set
{
"owner": "a.example",
"members": ["b.example", "c.example"],
...
}

// https://b.example/.well-known/first-party-set
{
"owner": "a.example"
}

// https://c.example/.well-known/first-party-set
{
"owner": "a.example"
}

Домен-владелец размещает файл манифеста, в котором перечислены домены участников. Браузер может запросить у сайта-участника информацию о владельце, а затем свериться с манифестом владельца, чтобы подтвердить связь между ними.

Предполагается, что политики браузеров будут предотвращать злоупотребление. Например, наборы собственных доменов не должны допускать обмена пользовательской информацией между не связанными друг с другом сайтами или объединения в группы сайтов с разными владельцами. Один из возможных способов регистрации сайтов—это требовать от них публикации файла с описанием группы доменов в общедоступном трекере (например, в специализированном GitHub-репозитории) вместе с информацией, необходимой для удовлетворения политики браузера. Для каждого из доменов в группе также может потребоваться публикация в каталоге .well-known специального файла для подтверждения, что домен действительно находится под управлением владельца группы.

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

Например, в случае с описанным выше набором собственных доменов сайт a.example может установить следующий файл cookie:

Set-Cookie: session=123; Secure; SameSite=Lax; SameParty

Теперь, если посетитель, находящийся на сайте b.example или c.example, отправит запрос на сайт a.example, этот запрос будет включать файл cookie session.


Участвуйте и делитесь отзывами

Дополнительная информация

Last updated: Improve article

We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.