Відмовляємося від печива: як підготувати сайт до оновлень Privacy Sandbox
Конспект виступу з Google I/O
У травні пройшла щорічна конференція Google I/O 2023. На ній Product Manager із напряму Privacy Sandbox Хелен Чо (Helen Cho) та Engineering Manager Privacy Sandbox Каустубха Говінд (Kaustubha Govind) розповіли про останні зміни у технології — поетапне відмовлення від файлів cookies та відстеження користувачів під час переходу з одного сайту на інший.
Яких змін очікувати вже найближчим часом та як до них підготуватися — читайте у конспекті виступу.
Product Manager Privacy Sandbox Хелен Чо (Helen Cho) (зверху) та Engineering Manager Privacy Sandbox Каустубха Говінд (Kaustubha Govind) (знизу)
Що не так з cookies
Хоча вони є критично важливою складовою для функціональності інтернету, cookies відомі тим, що створюють проблеми з приватністю та безпекою. Тому розробники Chrome працюють над новими правилами Privacy Sandbox, які охоплюють поетапну відмову від сторонніх файлів cookies. Тобто в якийсь момент Chrome повністю припинить їхню підтримку.
Кінцева мета Google — сформувати такий набір стандартів для Chrome та Android, який відповідатиме потребам інтернет-екосистеми та застосунків.
На сьогодні розробникам вже вдалося досягти певного прогресу в зниженні вектора відстеження:
- в Chrome 85 впровадили розділення кешу HTTP;
- на етапі версій Chrome 92-113 розробили механізм зменшення інформації в заголовку (User agent reduction);
- у версії Chrome 98 додали розділення стану мережі;
- в Chrome 113 додали Partitioning Storage, тобто розділення сховища.
Чим ближче момент, коли Chrome повністю відмовиться від cookies, тим важливіші інструменти, необхідні для підготовки сайтів до нововведення.
Готуємо сайт до життя без cookies
Крок 1: Визначаємо сторонні файли cookies
Файли cookies можуть бути сторонніми (third-party) або власними, залежно від контексту користувача та того, на якому сайті він знаходиться. Ця різниця не завжди очевидна, але зазвичай сторонніми файлами cookies називають файли cookies, які надсилаються в контексті міжсайтових запитів, таких як iframe або запити підресурсів.
Визначити їх можна двома способами.
Перший — заблокувати їх на вашому власному комп'ютері. Для цього скористайтеся інструментами розробника DevTools:
- Відкрийте вікно за допомогою комбінації клавіш Ctrl + Shift + I, перейдіть на вкладку Network і відкрийте свій сайт.
- Ви можете відфільтрувати сторонні запити, встановивши відповідний прапорець. Виберіть певний запит, а потім натисніть вкладку Cookies.
- Виділіть поле, щоби відобразити відфільтровані cookies-файли запиту, — це дозволить вам побачити, які файли cookies були заблоковані в запиті або відповіді.
Якщо ви блокуєте сторонні файли cookies, ви побачите підказку, що вказує на конфігурацію користувача як причину блокування файлів cookies. Наприклад: «Цей файл cookies був заблокований через користувацькі налаштування»:
Для кращого розуміння та орієнтації в інструментах розробника читайте інструкцію. Вона постійно оновлюється — залежно від прогресу проєкту Privacy Sandbox.
Другий спосіб виявлення сторонніх файлів cookies — аналіз коду. З 2019 року Chrome змінив механізм обробки файлів, обмежуючи доступ до файлів cookies лише першими сторонами за замовчуванням.
Це означає, що можна визначити будь-які файли cookies, що використовуються в контексті з третіми сторонами, за допомогою атрибута SameSite=None. Пошукайте його у коді за допомогою Ctrl+F:
Крок 2: Аналізуємо, навіщо вам cookies
Аналіз, як і чому сторонні файли cookies використовуються на вашому сайті, допоможе вам зрозуміти, які інструменти вам треба буде застосувати, щоби від них відмовитись.
Зазвичай сторонні файли cookies забезпечують можливість групування контенту і послуг. Наприклад, саме за допомогою cookies будується загальна система авторизації для сайтів одного бренду або сайтів певної країни.
Також поширеним варіантом використання сторонніх файлів cookies є залучення сторонніх бібліотек або сервісів.
Крок 3: Впроваджуємо інструменти Google
Наразі розробники Chrome намагаються визначити критичні ситуації під час використання нової технології, а також варіанти розв'язання можливих проблем. Вже сьогодні для підготовки сайтів до життя без cookies вони пропонують два інструменти.
CHIPS
Розглянемо кейс, коли вебсайт містить вбудовану карту з позначеними на ній місцями розташування магазинів або віджет для спілкування клієнтів зі службою підтримки.
У такому випадку постачальник послуг повинен зберігати файли cookies або стан (наприклад, вибрані користувачем уподобання магазину на карті) для кожного вебсайту верхнього рівня. Ось тут і стає в пригоді інструмент CHIPS (Cookies Having Independent Partitioned State).
Все, що потрібно зробити, — додати до файлу cookies атрибут Partitioned. Наприклад:
Set-Cookie: fav_store=123; SameSite=None; Secure; Partitioned
Тоді ваш міжсайтовий файл cookie автоматично отримуватиме різні файли cookies на кожному вебсайті верхнього рівня, де він вбудований. Іншими словами, кожен вебсайт верхнього рівня матиме свій власний файл cookie з унікальними даними, що стосуються саме цього конкретного сайту. Це запобігає можливості відстеження користувачів на різних вебсайтах.
Важливо! Завдяки CHIPS не потрібно буде чекати, поки сторонні файли cookies будуть поступово вимкнені, щоби переключити сайт на використання нової технології. Браузери ігнорують атрибути файлів cookies, які вони не впізнають. Тому ваші файли cookies продовжать працювати на клієнтах, які не підтримують CHIPS.
Також нещодавно в CHIPS було додано дві значущі зміни, які спрощують впровадження цієї технології в більшість застосунків:
- Була знята вимога до іменування префіксу хоста та обмеження за ім'ям хоста. Хоча початкова мета цієї вимоги полягала в тому, щоби сприяти найкращим практикам безпеки, багато розробників зазначили у зворотному зв'язку, що зараз вони повторно використовують файли cookies у піддоменах, і така вимога ускладнить імплементацію технології.
- Замість попереднього обмеження в 10 файлів cookies на розділ було встановлено обмеження динамічної пам'яті в 10 кБ на розділ. Це дозволить розробникам задіяти невелику кількість великих файлів cookies або велику кількість малих файлів cookies.
Детальніше про використання CHIPS можна прочитати тут.
FPS
Наразі браузер Chrome використовує межу на рівні сайту (тобто залежно від домена, на якому виконується JavaScript-код), щоб інтерпретувати власні та сторонні ресурси. Коли він припинить підтримку сторонніх файлів cookies, така інтерпретація може бути обмежувальною для організацій, що покладаються на файли cookies сторонніх доменів через архітектуру своїх вебсайтів, розроблену для використання декількох доменів.
Наприклад, організація підтримує кілька доменів із кодами країни, які використовують спільну інфраструктуру для свого вебсервісу, або має один домен із розділом про походи та інший домен для інтернет-магазину з кемпінговим спорядженням, і потрібно підтримувати переміщення користувачів між цими сайтами:
Для вирішення подібних випадків створили FPS.
FPS (First Party Sets — набори першої сторони, або власні набори) — це фреймворк для розробників, який дозволяє оголошувати зв'язки між доменами. Браузер надає доступ залежно від відношень сторонніх доменів до домену першої сторони.
Технологія може користуватися перевагами першої сторони включно з постійним доступом до власних файлів cookies, якщо домен верхнього рівня знаходиться в тому ж наборі.
У межах фреймворку існують три різних підмножини, які відповідають ключовим випадкам використання в мережі:
- Перша підмножина призначена для доменів верхнього рівня з кодами країн. Наприклад, якщо у вас є сайти example.com для США, example.ca для Канади та example.de для Німеччини, ви можете об'єднати їх в одну підмножину, щоби забезпечити доступ до загальних сервісів та інфраструктури. Файли cookies та дані можуть передаватися між цими сайтами, зберігаючи функціональність для користувача.
- Друга підмножина — для сервісних доменів. У цій підмножині ви можете визначити домени, від яких ваша організація залежить з погляду безпеки або продуктивності та яким потрібний доступ до особистості користувача для виконання своїх функцій.
- Третя підмножина — для пов'язаних доменів. Ваша організація може підтримувати кілька сайтів для різних пов'язаних брендів або продуктів, і вам може знадобитися відстежувати маршрут користувача по пов'язаних сайтах, щоби краще зрозуміти, як взаємодіють із вашими сайтами користувачі, або щоби пам'ятати стан входу користувача на пов'язаному сайті, покладаючись на ту ж інфраструктуру для входу до системи.
Для доменів всередині підмножини доступ до third-party cookies спрощується за допомогою інтерфейсу доступу до сховища (Storage Access API), який представляє механізм активного запиту доступу до файлів cookies сайту в контексті сторонньої сторони.
Для вирішення деяких обмежень інтерфейсу доступу до сховища введено також інтерфейс запиту доступу до сховища (request storage access 4 API) — наприклад, коли API може викликатися лише з iframe. Якщо браузер отримує запит через свій інтерфейс storage access API або request storage access 4 API, він підтверджує, що сторонній домен та домен першої сторони знаходяться в одній підмножині, та дозволяє запит на доступ.
Важливо! Інтерфейс доступу до сховища також підтримується в інших браузерах, як-от Safari та Firefox.
Для користувача набори першої сторони (first party sets) будуть «пов'язаними сайтами в групі». На основі списку наборів першої сторони користувачі можуть включати та виключати можливість керування доступом браузера Chrome. Крім того, вони бачать, чи входить відвідуваний ними сайт до набору першої сторони та які інші сайти з цього набору вони вже відвідували. Таким чином користувачі отримують інформацію про те, які сайти пов'язані між собою та належать до однієї групи наборів першої сторони.
Висновок
Chrome рухається шляхом поступового відмовлення від сторонніх файлів cookies. Ось що потрібно зробити, щоби бути готовим до майбутніх змін у Chrome:
- використовуйте інструменти розробника (DevTools) або шукайте SameSite=None-cookies, щоби визначити, залежить чи не залежить ваш вебсайт від third-party cookies;
- визначте, для чого використовуються файли cookies, і вирішіть, які інструменти від Google підходять для того, щоби від них відмовитись.
І останнє: якщо ви зіткнулись із ситуацією, яка не підтримується CHIPS та FPS, подивіться інші пропозиції Privacy Sandbox, де необхідність у міжсайтовому файлі cookie замінюється спеціалізованим API, що дозволяє виконувати такий сценарій використання.