Safari, respektive Webkit (jádro prohlížeče Safari), pracují už víc než 2 roky na ITP (Intelligent Tracking Prevention). Které slouží hlavně k ochraně uživatelů před cross-site trackingem. Na začátku se jednalo hlavně o omezení u third-party cookies. Ale poslední dvě verze ITP začaly omezovat i first-party cookies. Ale začněme pěkně od začátku.
Jak se poznává stránka s cross-site tracking schopností?
Řekněme, že máme stránku (například: můjweb.cz), a běží nám reklamy na externí stránce (například: sociálnísíť.cz). Sociálnísíť.cz si buduje o každém uživateli profil. Dělá to velmi jednoduše, při prokliku přes reklamu sociálnísíť.cz pravděpodobně využije jednu z dvou možností:
- Na každé stránce (můjweb.cz, tvůjweb.cz…), která využívá sociálnísíť.cz k reklamám si sociálnísíť.cz generuje identifikátor uživatele (userId=2345) a ten si ukládá do first-party cookie. Když někdo proklikne reklamu, tak do odkazu na naši stránku přidá identifikátor prokliku (https://můjweb.cz?proklikId=123). Jediné co zbývá, je poslat si informaci, že proklik s id 123 má na stránce můjweb.cz userId 2345.
- Druhou možností je, využít third-party cookies. To funguje tak, že když přijde návštěvník na můjweb.cz. Tak se načte část stránky (iframe) ze sociálnísíť.cz a nastaví third-party cookie pro sociálnísíť.cz, která si následně jenom spojí identifikátory z různých stránek.
ITP využívá toho, že zná právě tyto postupy a při rozhodování zohledňuje počet unikátních stránek / pod oken, na kterých si načetli kód z sociálnísíť.cz nebo počet unikátních domén, na které sociálnísíť.cz přesměrovává. Zároveň pokud ITP identifikovalo sociálnísíť.cz jako stránku, která využívá cross-site tracking, tak pokud nějaká druhásíť.cz na ni často přesměrovává, bude také druhásíť.cz označena za web využívající cross-site tracking.
ITP a third-party cookies
Prvním krokem bylo zavedení tzv. oddělených third-party cookies. To znamená, že cookie požadovaná z můjweb.cz uložená u sociálnísíť.cz byla uložena přesně pro tuto kombinaci domén. A nebyla tím pádem přístupná z jinýweb.cz. Po 30 dnech byla cookie smazána.
V další verzi přišla změna. Third-party cookies byly uloženy na 30 dnů pouze pokud byl získán přístup pomocí Storage Access API (řešící, aby stránka vložená z third-party contextu měla přístup ke svým vlastním first-party cookies), v opačném případě byly vymazány po zavření prohlížeče. Storage Access API má několik technických podmínek (část, která se načítá, musí být vložena přímo do hlavního okna a musí být obohacena o tokeny), ale taky obsahuje podmínku, že se může o přístup žádat pouze v momentu smysluplné interakce uživatele. Při interakci navíc vyskočí okno, kde uživatel musí odkliknout povolení pro přístup k paměti.
Poslední verze ale oddělené third-party cookies zrušila úplně. Dnes, pokud by stránka chtěla být identifikována jako schopná provádět cross-site tracking a ukládat jakékoliv cookies, musí využít Storage Access API.
ITP a first-party cookies
V začátcích ITP se omezení pro first-party cookies nevyskytovala. To se změnilo ve verzi 2.1, kdy cookies, které jsou nastavené na frontendu, mají maximální trvanlivost 7 dnů. Tuto metodu využívá většina služeb (Google Analytics, Facebook Pixel…), tím pádem mohla vypadat životnost cookie následovně:
- Den 1.: Otevřel jsem stránku můjweb.cz, můj oblíbený nástroj vytvořil cookie s unikátním ID pro můj prohlížeč. Cookie má životnost 7 dnů (místo 2 let, jak se běžně nastavuje).
- Den 3.: Otevřel jsem stránku můjweb.cz, životnost cookie se obnoví, znova má 7 dnů.
- Den 15.: Otevřel jsem stránku můjweb.cz, životnost cookie vypršela, můj oblíbený nástroj si myslí, že jsem nový uživatel.
V ITP verzi 2.2 se toto pravidlo ještě zpřísnilo. Pokud stránka, ze které jsme přišli, je označena za schopnou provádět cross-site tracking a link, na který jsme přišli, má v sobě nějaké ID, tak jakákoliv cookie nastavena na této stránce má životnost pouze 1 den, zbytek zůstává na 7 dnů.
Proč se to vlastně děje…
Motivace za ITP je hlavně ochrana uživatelů před nechtěným sledováním. Upřímně, není moc lidí, kteří tuší, kde všude jsou využita data poskytována službě jako sociálnísíť.cz. Navíc v cookies se aktuálně ukládá někdy až moc informací, které nejsou dobře zabezpečené. ITP se snaží přesunout tyto informace z javascriptových cookies do Http-only a Secure cookies. To sice vyžaduje víc práce od vývojářů, ale je to mnohem bezpečnější způsob.
Některá technická řešení pro bezpečnější práci s cookies jsou popsána v tomto článku.