Cookie, хранилище и отслеживание после сторонних cookie

Cookie были первоначальным способом узнать вернувшийся браузер, и двадцать лет их хватало. Изменения, которые браузеры в них внесли, объясняют, почему фингерпринтинг снова стал интересен.
Собственные и сторонние
Собственный cookie устанавливает сайт из адресной строки. Благодаря ему вы остаётесь авторизованным. Сторонний cookie устанавливается другим доменом, чьё содержимое встроила страница, например рекламным скриптом, и этот домен может читать его на каждом сайте, который его встраивает. Это второе свойство и сделало межсайтовое отслеживание тривиальным: один рекламодатель, один cookie, все сайты.
Что изменилось
Safari начал блокировать сторонние cookie по умолчанию в 2017 году через Intelligent Tracking Prevention и неоднократно ужесточал защиту. Firefox последовал в 2019 году с Enhanced Tracking Protection, а затем с Total Cookie Protection, которая даёт каждому сайту собственное хранилище cookie, так что сторонний cookie на одном сайте невидим на другом. Chromium ввёл секционированные cookie (атрибут Partitioned, «CHIPS»), чтобы встроенный контент мог хранить состояние отдельно для каждого сайта верхнего уровня, и несколько лет объявлял, откладывал и в итоге отступил от полного удаления сторонних cookie, остановившись на выборе пользователя.
Практический результат: межсайтовое отслеживание через cookie ненадёжно в Safari и Firefox и всё чаще секционируется в Chromium. Это хорошо для приватности, и это подтолкнуло трекеры к сигналам, которым хранилище вообще не нужно.
Другое хранилище
localStorage, IndexedDB и Cache API по природе собственные: они принадлежат источнику, который их записал, и теперь секционируются по сайту верхнего уровня во всех основных браузерах, поэтому их нельзя использовать как межсайтовые идентификаторы, как старые сторонние cookie. Приёмы отслеживания через ETag и кэш существуют, но хрупки и широко нейтрализуются.
Почему пробел заполняет отпечаток
Отпечатку не нужно хранилище. Он пересчитывается из собственных свойств браузера при каждом визите, поэтому очистка cookie его не сбрасывает, а секционирование не изолирует. В этом его привлекательность для трекеров и опасность для тех, кто считал «очистить данные сайта» чистым листом. Меры противодействия тоже другие: не блокировка хранилища, а уменьшение разнообразия того, что может прочитать страница, — для этого и нужны сокращение user agent, шум в canvas и маскировка рендерера.
Что может показать диагностика
Страница может сообщить, включены ли cookie и установлен ли заголовок Do Not Track (сигнал, который почти ни один сайт не соблюдает, поэтому браузеры убирают его в пользу Global Privacy Control). Она не может читать cookie другого сайта, а заслуживающая доверия диагностика не устанавливает собственных. PowerScan работает без cookie, без хранилища и без идентификаторов, и это можно проверить в инструментах разработчика браузера: панель хранилища для сайта после сканирования пуста.
Что сегодня значит изоляция
Для тех, кто разделяет аккаунты, cookie — лёгкая часть: у отдельных профилей отдельные хранилища cookie. Трудная часть — отпечаток, потому что два профиля на одном компьютере с одним браузером делят каждый аппаратный сигнал и сигнал отрисовки, если браузер их не меняет. Об этом следующая статья.


