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

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

Published on Updated on

Translated to: Español, Português, 한국어, 中文, 日本語, Français, Deutsch

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

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

Веб-страницы состоят из контента из различных источников. Некоторый контент является собственным, т. е. загружается с основного сайта, на который зашел посетитель. Другой контент загружается из сторонних источников—это может быть реклама, встраиваемые медиаобъекты, а также общие ресурсы, такие как 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.


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

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

Updated on Improve article

This site uses cookies to deliver and enhance the quality of its services and to analyze traffic. If you agree, cookies are also used to serve advertising and to personalize the content and advertisements that you see. Learn more about our use of cookies.