Na vývojářské konferenci I/O 2019 oznámil Google, že hodlá do prohlížeče Chrome přidat dvě novinky týkající se soukromí a bezpečnosti uživatelů. Jde o takzvané same-site cookies a ochranu proti fingerprintingu. Obou novinek bychom se měli dočkat v budoucích verzích prohlížeče, pravděpodobně už na konci letošního roku.
Same-site cookies
Cookies jsou malé kousky informace, které si webová stránka může uložit v prohlížeči. Podle ní pak může identifikovat konkrétního uživatele a například tak při opětovné návštěvě zajistit jeho přihlášení, udržet obsah nákupního košíku nebo nastavit zvolený jazyk.
Tento princip je pro současný web naprosto zásadní a potřebujeme jej. Zároveň je ale často zneužíván v situacích, které pro uživatele nejsou tak užitečné – sledování chování nebo třeba cílení reklamy. Doposud neexistoval žádný standard, který by umožňoval jednotlivá použití cookies rozlišovat, proto ke všem situacím prohlížeče přistupují stejně.
To by se mělo brzy změnit, protože Google hodlá do Chrome uvést nový mechanismus založený na návrhu standardu IETF. Na jeho vývoji spolupracovali vývojáři Google a Mozilla předchozí tři roky a cílem je odlišit cookies třetích stran od těch místních, které slouží například pro zmíněné přihlašování.
Uživatel pak dostane do ruky možnost blokovat či dodatečně odstranit nechtěné cookies, aniž by přitom poškodil ty chtěné. Sledovací systémy tak budou mít smůlu, ale například k e-mailové schránce zůstane prohlížeč i nadále přihlášený.
Cookies totiž mohou být dvojího typu: ty nastavené právě navštíveným webem se jmenují first-party cookies a všechny ostatní pak third-party cookies. Obvykle totiž dnes web nenastavuje jen první zmíněnou, ale různé objekty na něm do prohlížeče vkládají také své vlastní identifikační informace. Zda konkrétní cookie právě spadá do té či oné kategorie, závisí na kontextu – na jaké webové stránce se právě nacházíme.
Nový mechanismus SameSite
dovoluje vývojářům webů určit, jak se má prohlížeč chovat k jejich cookie. Existují tři varianty: nic není nastaveno, režim Strict
a režim Lax
. Google celý princip podrobně vysvětluje na svém blogu. Pokud je nastaven první zmíněný režim, cookie se z prohlížeče odešle jen v případě, že právě načtená URL odpovídá přesně adrese cookie. Pokud je uživatel na vaší stránce, cookie s informacemi o přihlášení se odešle podle očekávání.
Pokud je ale nějaký objekt ze stránky vložen do jiného webu, obsah cookie se při načtení objektu v režimu Strict nepřenese. Nejste na správném webu, není důvod se představovat. Takové chování brání například útoku typu Cross-site request forgery (CSRF), který spoléhá na to, že weby často nekontrolují, odkud přichází požadavek. Zákeřná stránka tak může zneužít vašeho přihlášení na jiném webu a odeslat na něj z vašeho prohlížeče požadavek k akci. Protože cílový web nekontroluje, že se zrovna nacházíte na jiné stránce, ochotně požadavek provede, protože je potvrzen správnou cookie z vašeho prohlížeče. V režimu Strict se jí to ale nepovede, protože kontrolu provede už sám prohlížeč a přestože se zákeřná stránka pokusí propašovat do cílového webu nový požadavek, neprojde s ním zároveň vaše cookie, web vás nepozná a akci nepřihlášenému uživateli nedovolí provést.
V případě některých cookies ovšem vývojář i uživatel požaduje, aby se přenášely i při návštěvě z jiného webu. Takto je možné například rozlišit cookies určené k pouhému personalizovanému zobrazení informací, které nejsou tak citlivé jako cookies použitelné k nějakým zásadním akcím (změna hesla, zaslání příspěvku, potvrzení nákupu a podobně). Pro bezpečné cookies je pak možné nastavit režim Lax, kterým explicitně prohlížeči říkáme, že danou informaci může původnímu webu posílat i přechodu z cizí stránky. Třetí možností je pak None, což je vlastně současný stav pro klasické third-party cookies.
Google tvrdí, že je tak možné velmi snadno rozlišit místní cookies od těch sledovacích, které fungují mezi různými weby. Předpokládá se, že vývojáři upraví svůj kód tak, aby při nastavování cookies přidával také parametr SameSite. V opačném případě se totiž prohlížeč bude k informaci chovat stejně, jako by byla doplněna o SameSite=None
, bude ji tedy distribuovat z libovolné domény, ale zároveň ji bude považovat za sledovací cookie.
Podle současného plánu bude v připravovaném Chrome 76 možnost zapnout skrytou volbu same-site-by-default-cookies
, která jako výchozí volbu u neoznačených cookies nastaví na Lax. V takové situaci budou všechny cookies odesílány jen na svých domovských URL. Pokud bude potřebovat vývojář chování změnit, bude to muset při ukládání cookie explicitně zmínit.
Dále bude možné zapnout vlastnost cookies-without-same-site-must-be-secure
, která prohlížeči říká, že neoznačené cookies musí mít zároveň příznak Secure. Pokud jej nemají, bude je prohlížeč ignorovat. To omezí přenos third-party cookies po bezpečném HTTPS kanále, což dále omezí možnost jejich zneužití.
Firefox přidal podporu SameSite cookies v dubnu loňského roku, s vydáním Firefoxu 60. Zatím není jisté, zda chce Google do rozhraní Chrome přidat volbu blokace cookies podle toho, jaké mají použití a zda tedy patří původnímu webu nebo jsou určeny ke sledování napříč různými stránkami. Google ale plánuje možnosti dále testovat ještě v průběhu letošního roku.
Ochrana proti fingerprintingu
Zablokování nechtěných cookies je jednou z možností, jak zamezit označkování vlastního prohlížeče nejrůznějšími službami. Čím dál častěji se ale na internetu objevuje používání fingerprintingu, tedy identifikace prohlížeče podle unikátních znaků. Jde o překvapivě účinnou metodu, která spoléhá na různá moderní API a různá data získaná v různých prohlížečích.
Výsledkem přečtení velkého množství různých informací je pak jednoznačný identifikátor, podle kterého je možné prohlížeč stejného uživatele poznat i při příští návštěvě. Přestože se sám nepředstaví žádnou konkrétní hodnotou uloženou dříve v cookie, unikátnost přesto konkrétní prohlížeč prozradí. Není to nová věc, mluví se o ní už přes deset let a prohlížeče se jí snaží průběžně bránit.
Na konferenci I/O 2019 bylo také zmíněno, že se Chrome bude bránit fingerprintingu pomocí omezení různých metod sběru dat o prohlížeči. Google v tomto směru zatím neuvedl žádné konkrétní metody, které hodlá blokovat. Nutno dodat, že způsobů existuje velmi mnoho a neustále přibývají.
Je možné zjišťovat informace o nainstalovaných rozšířeních, zneužívat vykreslování pomocí hardwarové akcelerace, kontrolovat používané fonty nebo třeba měřit rozlišení různých prvků. Jako první začal s omezováním těchto možností prohlížeč Tor Browser, který se přímo zaměřuje na soukromí uživatelů. Později byla některá opatření portována zpět do Firefoxu, ze kterého Tor Browser vychází.
Google chce minimalizovat škody
Možná vás napadlo, proč chce vlastně Google podnikat zmíněné kroky, když jeho hlavní byznys spočívá právě v personalizovaném zobrazování reklam. Odpovědí je minimalizace škod. Současný web se totiž vymkl kontrole a uživatele čím dál častěji nasazují plošné blokování reklam, což poškozuje zájmy Google i provozovatelů webů žijících z reklamy.
Chrome před časem začal blokovat podvodné reklamy a problémové platby, aby pročistil nepřehledné prostředí a z dlouhodobého hlediska zpomalil nárůst plošného blokování na straně uživatelů. Většina uživatelů totiž uznává, že pokud by se weby chovaly rozumněji, nebylo by nutné do nich tolik zasahovat. Toto jsou jen další kroky stejným směrem.
Google tvrdí, že chce do webu opět přinést transparentnost, aby výchozí stav byl pro uživatele bezpečnější a přijatelnější. Pokud se tedy podaří zabránit stavu, kdy si jakýkoliv web může vložit do libovolného prohlížeče své identifikační údaje a zároveň může kdokoliv identifikovat prohlížeč podle jeho jedinečných znaků, dostane se web opět pod kontrolu uživatele. Ten pak nebude muset plošně blokovat, což bude výhodné pro Google i pro weby žijící z jeho reklam.