HTTP cookie

Cookie (po anglicky koláčik, oblátka, sušienka) je v protokole HTTP malé množstvo stavových dát, ktoré WWW server pošle webovému prehliadaču súčasne s požadovanou webovou stránkou daného webového sídla, ak toto používa cookies (množné číslo od cookie). Ak sú cookies v prehliadači povolené, uložia sa na počítači (alebo smartfóne alebo tablete) používateľa, zvyčajne ako krátky textový súbor na určené miesto. Pri ďalšej požiadavke prehliadača na stránku z toho istého webového sídla (prakticky z tej istej domény napríklad passwords.example.org) potom prehliadač posiela späť serveru aj uložené cookie alebo viac cookies, ktoré si pýta už v hlavičke stránky. V prípade dočasných cookies sú informácie zapamätané len po dobu trvania aktuálnej návštevy (session) daného sídla, v prípade permanentných cookies aj pri ďalších návštevách až do uplynutia platnosti cookies, alebo ich odstránenia (vymazania) používateľom.

Cookies zvyčajne slúžia na rozlišovanie jednotlivých užívateľov. Ukladajú sa do nich najčastejšie používateľské predvoľby (napríklad jazyk) a pod. Myšlienku cookies navrhol Lou Montulli, vtedy pracujúci vo firme Netscape Communications.

Názov cookie – sušienka je odvodený z anglosaského zvyku ponúknuť návšteve obľúbenú sušienku na vytvorenie príjemnejšej atmosféry. Cookies majú viaceré výhody ale môžu byť aj zneužité na sledovanie užívateľa, preto je dôležité rozumieť ich účelu, čo umožňuje zvoliť správne nastavenie prehliadača a rozhodnutie o tom, či prijať alebo zamietnuť prijatie a ukladanie cookies.

Jann Horn v rámci projektu Google Project Zero popísal spôsoby, ako môžu byť cookies čítané sprostredkovateľom komunikácie (anglicky Man-in-the-middle) ako sú napríklad poskytovatelia Wi-Fi hotspotov. Za týchto okolností odporúča použiť prehliadač v privátnom režime prehliadania, ktorý sa v rôznych prehliadačoch nazýva ako Private Browsing (Safari), Inkognito/Incognito (Google Chrome), InPrivate (Internet Explorer, Microsoft Edge). V tomto režime sa cookies nezapisujú natrvalo resp. sa odstraňujú priamo prehliadačom.  Nastavenie prehliadača na prijímanie cookies je podľa Zákona o elektronických komunikáciách (§ 55 ods. 5 pozri dole celé znenie) považované za súhlas s používaním cookies. Preto ak navštívite slovenské webové stránky a v prehliadači je povolené prijímanie súborov cookie, považuje sa to za prijatie podmienok používania súborov cookie daného sídla a preto je jedno kde na oznam o používaní cookies kliknete. 

V úvode Všeobecného nariadenia o ochrane údajov (GDPR) sú cookies (odst. 30) definované ako online identifikátory, ktoré ..môžu zanechávať stopy, ktoré sa najmä v kombinácii s jedinečnými identifikátormi a inými informáciami získanými zo serverov môžu použiť na vytvorenie profilov fyzických osôb a na ich identifikáciu a preto sú považované za osobné údaje. (Pozri ďalej Bezpečnosť a ochrana súkromia.)

Názov a história 
Termín „cookie“ vymyslel programátor webového prehliadača Mosaic Lou Montulli. Bol odvodený od výrazu „magic cookie“ (čarovný koláčik), čo je balík údajov, ktoré program prijíma a posiela späť nezmenené a používajú ho programátori Unixu. Prvá verzia prehliadača, ktorá podporovala súbory cookie bola verzia 0.9beta Mosaic Netscape  vydaná 13. októbra 1994. Prvým použitím cookies (mimo laboratórií) bola kontrola, či návštevníci webovej stránky Netscape už stránku navštívili. Montulli požiadal o patent na cookies v roku 1995 a v roku 1998 mu bol udelený. Podpora pre cookies bola ale už integrovaná aj do Internet Explorerom verzii 2, vydanej v októbri 1995.

Zavedenie cookies nebolo v tom čase verejnosti známe. Predvolene boli súbory cookie akceptované a používatelia neboli upozornení na ich prítomnosť (na internete a vo svojom počítači). Verejnosť sa o súboroch cookie dozvedela až po tom, čo denník Financial Times o nich 12. februára 1996 uverejnil článok. V tom istom roku súbory cookie získali veľkú pozornosť médií, najmä z dôvodu potenciálnych dôsledkov na ochranu súkromia. O cookies sa  potom diskutovalo na dvoch vypočutiach Federálnej obchodnej komisie v USA v rokoch 1996 a 1997.

V tom období už prebiehal formálnych špecifikácií pre cookies. Diskusie o formálnej špecifikácii sa začali už v apríli 1995 na konferencii www-talk. V rámci Internet Engineering Task Force (IETF) bola vytvorená špeciálna pracovná skupina. Brian Behlendorf a David Kristol navrhli dva alternatívne návrhy na zaznamenanie stavu transakcií HTTP. Skupina na čele so samotným Kristolom a Lou Montulli sa čoskoro rozhodla použiť špecifikáciu Netscape ako východiskový návrh. Vo februári 1996 pracovná skupina identifikovala súbory cookie tretích strán ako značnú hrozbu pre súkromie a  špecifikácia vytvorená skupinou bola zverejnená ako RFC 2109 vo februári 1997. Špecifikuje, že súbory cookie tretích strán buď nemajú byť vôbec povolené, alebo aspoň nie štandardne povolené. V tom čase už reklamné spoločnosti používali súbory cookie tretích strán a Netscape a ani Internet Explorer nerešpektovali odporúčanie týkajúce sa súborov cookie tretích strán z RFC 2109. RFC 2109 bol nahradený RFC 2965 v októbri 2000.

Účel cookies 
Cookies môžu byť použité na zaznamenávanie voľby, ktorú urobil užívateľ ako napríklad položky pridané v nákupnom košíku v internetovom obchode (e-shop) alebo môžu zaznamenávať aktivitu používateľa počas prehliadania napríklad kliknutia na tlačidlá, prihlásenie alebo zaznamenávanie stránok, ktoré už navštívil. Môžu sa tiež použiť na zapamätanie si ľubovoľných informácií, ktoré používateľ predtým zadal do formulárov ako sú mená, adresy, heslá alebo čísla kreditných kariet.

Iné druhy cookies zabezpečujú niektoré základné funkcie súčasných webov. Najdôležitejšie sú autentifikačné (authentication) cookies, ktoré používajú servery na to, aby zistili, či je používateľ prihlásený alebo nie (a s ktorým účtom, ak ich má viacej). Bez takéhoto mechanizmu by stránka nevedela, či zobraziť na stránke citlivé informácie alebo nie a či požiadať používateľa o autentifikáciu prihlásením (login) alebo nie. Moderné weby však neukladajú meno používateľa a heslo do cookie ale využívajú iné metódy napríklad HTTP authentication. Tieto údaje aj keď sa uložia v počítači (napríklad pri voľbe zapamätať heslo), sú zvyčajne chránené ešte ďalším prístupovým mechanizmom. Heslá v internetových bankách nie sú nikdy ukladané do cookies.

Rozdelenia cookies podľa účelu 
Java delí cookies na 3 kategórie a Google na 6 kategórií. Názvy kategórii v nasledovnom zodpovedajú Jave a názvy Google sú v zátvorke šikmým písmom:

Základné cookies (Predvoľby a Zabezpečenie) 

 požadované alebo nevyhnutné pre stránky s prihlasovaním a transakciami
Zapamätanie prihlasovacích údajov a zjednodušenie prihlasovania
 Zapamätanie stavu prebiehajúcej úlohy alebo postupu transakcii

Funkčné cookies (Procesy a Analytics) 

 Analýza využívania sídla za účelom poskytovanie prispôsobeného (personalizovaného) obsahu
 Analýza s cieľom optimalizovať funkčnosť
 Uložiť obsah nákupného košíka/vozíka
 Umožniť tretím stranám zdieľanie na sociálnych sieťach
 Zabezpečiť aby sa webová stránka zobrazovala konzistentne

Reklamné cookies (Inzercia a Stav inzercie) 

 Poskytovať ponuky alebo reklamy založené na záujmoch
 Umožniť tretím stranám, aby poskytovali reklamy založené na záujmoch aj na iných stránkach ako tohto poskytovateľa
 Umožniť zdieľať stránky so sociálnymi sieťami
 Umožniť posielať komentáre

Technické podrobnosti 
Hoci väčšina prehliadačov cookies podporuje, iné jednoduchšie prehliadače (napr. na mobilných zariadeniach) ich podporovať nemusia; navyše cookies možno vo väčšine prehliadačov zakázať. Ak prehliadač cookies podporuje, mal by spĺňať tieto minimálne limity:
 Podpora aspoň 300 cookies
 Aspoň 4 KiB na dáta jednej cookie
 Aspoň 20 cookies na doménu
 Ak niektoré prehliadače nemôžu prijať väčší cookie, nesmú "orezať" jeho obsah, ale ho vôbec neprijať 

Cookies obsahujú textové informácie. Na strane klienta (užívateľa) sa môžu ukladať na rôzne miesta. Napríklad pre Internet Explorer vo Windows XP  sa ukladali ako textové súbory do adresára c:\Documents and Settings\Meno používateľa\Cookies. V novšom prehliadači Google Chrome sa v systéme Windows 7 a 10 ukladajú cookies ako zašifrované záznamy (riadky) do SQL databázy a sú v súbore C:\Users\<current_user>\AppData\Local\Google\Chrome\User Data\<Profile 1>\Cookies. Cookies sa teda dajú prezrieť alebo odstrániť len v nastaveniach prehliadača.

Funkcia cookies je definovaná v RFC 2965 pomocou HTTP hlavičiek Set-Cookie (alebo jej novšieho variantu Set-Cookie2) a Cookie. Hlavička Set-Cookie je poslaná v odpovedi servera a obsahuje:
 Názov (identifikátor) cookie
 Dáta cookie (obmedzené prehliadačom, vyžadovaná je podpora aspoň pre 4 096 bajtov),
 Dobu platnosti cookie (resp. čas, kedy doba vyprší),
 Doména, pre ktorú cookie platí,
 Adresár na serveri, pre ktorý cookie platí.
Ak má prehliadač aspoň jednu cookie pre daný server (a daný adresár na ňom), posiela s každým dotazom danému serveru aj hlavičku Cookie, ktorá obsahuje rovnaké dáta, ktorá server pôvodne poslal.

V prehliadačoch s podporou JavaScriptu možno v tomto jazyku ku cookie pristupovať cez vlastnosť document.cookie vo forme: názov_1._cookie = hodnota_1._cookie; názov_2._cookie = hodnota_2._cookie; .... Páry názov: hodnota sú oddelené bodkočiarkou, ak má hodnota obsahovať bodkočiarku, je obalená úvodzovkami.

Cookie možno nastavovať taktiež na strane servera (podľa možností skriptovacieho jazyka) – nastavenie hodnoty cookie predstavuje v podstate pridanie HTTP hlavičky do odpovede serveru (z toho dôvodu musí nastavenie prebehnúť pred vypísaním čohokoľvek na výstup). Napríklad, pre jazyk PHP k tomu slúži funkcia setcookie so syntaxou: 

Bool setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

Bezpečnosť a ochrana súkromia 
Cookies neznamenajú žiadne nebezpečenstvo pre počítač, pretože sú v textovom alebo podobnom súbore, ktorý nemôže byť spustený a prevziať kontrolu nad počítačom. Napriek tomu cookies môžu byť nebezpečné z pohľadu ochranu súkromia. Navštívený web si totiž môže ukladať do cookies akékoľvek informácie, ktoré o návštevníkovi zistí a môže tak postupne zisťovať záujmy konkrétneho návštevníka: ktoré stránky navštevuje, aké informácie vyhľadáva, ako často daný web navštevuje, na ktorý iný web odchádza a pod.

Týchto informácií sa dá neskôr aj bez vedomia návštevníka využívať pre cielenú reklamu (eufemisticky nazývanú ako reklama založená na záujmoch), štatistické vyhodnocovanie správania návštevníkov, a pod. Tieto informácie však môže server získavať aj bez cookies, preto toto ich využitie nemôže byť považované za obzvlášť nebezpečné.

Ak viacero webových sídiel využíva rovnakú technológiou cookies a zasiela ich tretej strane, môže potom táto tretia strana pomocou cookies identifikovať a sledovať užívateľa aj pri prechádzaní z jednej domény na druhú. Takýmto nástrojom na identifikáciu návštevníkov je napríklad Google Analytics. 

Cookies možno zneužiť najmä vtedy, ak získa útočník prístup k počítaču používateľa, pretože cookies na počítači nie sú nijako chránené. Potom útočník môže s cookies "ukradnúť" identitu napadnutého.

Aj bez fyzického prístupu k počítaču existuje niekoľko podvodných spôsobov ako ukradnúť cookies (angl. cookie theft) alebo ukradnúť/uniesť aktuálnu návštevu (angl. session hijacking), ktoré sú možné, obzvlášť ak je pripojenie cez nezabezpečenú wifi sieť, ak je webový prehliadač zle nastavený alebo nechránený.

Právne neriadenia 
Podľa smernice Európskej únie (vykonaná v SR zákonom o elektronických komunikáciách  452/2021 Z.z. ) musí www server poskytnúť užívateľovi informáciu o používaní cookies a získať súhlas užívateľa ešte pred tým, než sa cookie uloží do jeho používateľovho počítača.[ Výsledok je to, že od jesene roku 2015 väčšina webov začala zobrazovať informačný pruh o cookies, ktorý je možné odstrániť potvrdením súhlasu tlačidlom na ňom umiestneným. 

Poslanecká snemovnňa ČR schválila novelu zákona  o elektronických komunikáciách ktorá začne platiť od 1. januára 2022 a na Slovensku začne platiť nový Zákon o elektronických komunikáciách od 1. februára 2022. Dosť zásadne menia správu cookies. Zmena v správe cookies ovplyvní nielen návštevníkov ale aj správcov webov a internetových marketérov , ktorej účelom je dosiahnuť európsky kódex elektronickej komunikácie. To sa bude týkať hlavne prevádzkovateľov webových stránok, ktorí používajú analytické reklamné nástroje.  Zmena spočívá v tom, že užívateľ musí po novom aktívne oznámiť súhlas pre používanie cookies a ďalších sledovacích technológií. Teda v skratke povedané, zo súčasného opt-out režimu sa prechádza do režimu opt-in. 

Doteraz platilo, že pokiaľ sa užívateľ sám od nejakej podobnej služby priamo neodhlásil, bolo možné mu ju vnucovať. Od roku 2022 platí, že ak užívateľ nedá výslovný súhlas, platí automaticky, že pri ňom sledovacie technológie, ako sú cookies, nie je možné využívať.

Súhlas by mal zodpovedať stanoveným požiadavkám GDPR. Takže musí byť dobrovoľný, nesmie sa vynucovať zablokovaním prístupu ku stránke alebo akýmkoľvek znepríjemňovaním jej používania, a tým nútiť užívateľov k jeho udeleniu a musí byť plne informovaný. Užívateľ musí rozumieť, čo je predmetom jeho súhlasu, a na čo budú na ňom získané dáta použité. Súhlas musí byť za každých okolností vyjadrený jednoznačným prejavom vôle. Zároveň je ustanovené, že udelenie súhlasu má byť rovnako tak ľahké ako jeho odvolanie.

Prípad zneužitia cookies na Slovensku 
Odborník na nákup lacných leteniek Dušan Kráľ tvrdí, že niektoré letecké spoločnosti alebo predajcovia leteniek využívajú cookies na sledovanie zákazníkov a na manipuláciu s výškou cien leteniek. Princíp takéhoto zneužitia spočíva v tom, že cena sa zvyšuje so vzrastajúcim počtom návštev daného letu. 

Cookies sú textové záznamy, ktoré sú napríklad v systéme Windows pre prehliadač Google Chrome v priečinku: C:\Users\<účet_užívateľa>\AppData\Local\Google\Chrome\User Data\Default\ v súbore Cookies (je to SQLite databáza). Samotný cookie sa preto nemôže spustiť a prevziať ovládanie počítača (šíriť vírus a pod.). Problémom je preto len možné zneužitie cookies, ktoré napríklad obsahujú nákupné správanie (napríklad návšteva informácií o konkrétnom lete alebo ceny naposledy zaplatené za letenky ako v spomínanom prípade). O takýto druh údajov môže mať záujem nielen priamo predajca, ktorého stránku navštívite (ktorý má právo čítať svoje cookie na vašom počítači) ale aj ostatní predajcovia, ktorí sa k nim môžu dostať podvodmi.

Povoliť, odstrániť, zakázať cookies 
Cookies majú mnohé výhody a ich používanie uľahčuje prehliadanie. Vo všeobecnosti ich netreba zakazovať ani zatracovať. Zneužitie cookies sa zbytočne nafukuje a to aj v prípade na Slovensku, kedy sa zvyšovanie ceny ako dôsledok používania cookies nedalo jednoznačne preukázať. Naša legislatíva definuje (pozri nasledovný nadpis), že cookies môžu byť použité len na prenos alebo uľahčenie prenosu. Zneužitie cookies na manipuláciu s cenou je preto trestné. Proti zákazu alebo obmedzeniu cookies sa stavajú firmy, ktoré sa špecializujú na vyhľadávanie a predávanie reklamy. Naopak, ich možné negatívne dôsledky zveličujú firmy zamerané na ochranu počítačov a osobných údajov. 

Užívateľ má možnosť v počítači cookies prehliadať a odstrániť ich jednotlivo alebo všetky naraz a to buď priamo (ak vie kde sú uložené) alebo pomocou prehliadača. Odstránenie cookies z počítača nemá žiaden podstatný vplyv na prehliadanie webu. Web by mal potom (pri ďalšej návšteve po odstránení cookies) užívateľa pokladať za nového. Je však pravdou, že po odstránení sa môžu odstrániť aj niektoré údaje, ktoré uľahčujú prihlasovanie alebo vypĺňanie formulárov. V prehliadači Google Chrome možno nastavenie cookies nájsť pod Nastavenia alebo chrome://settings/content/cookies a zobraziť všetky cookies pomocou chrome://settings/siteData (Chrome umožňuje prezerať, povoliť, zakázať, odstrániť cookies nie však ich priamo zobraziť alebo upravovať). 

Užívateľ môže úplne zakázať ukladanie cookies na svojom počítači alebo zvoliť si režim privátneho (privacy mode) prehliadania (Inkognito, inPrivate a pod.), ktorý má ešte výraznejšie obmedzenia. Musí však potom počítať s obmedzeniami, ktoré vyplývajú z nemožnosti využiť výhody cookies. Nie je pravda, že web stránky nefungujú bez cookies. Nefungujú len služby, pre ktoré sú cookies nevyhnutné (alebo web stránky, ktoré ktoré sú navrhnuté zámerne tak, aby bez cookies nefungovali).

Smernica Európskej únie o cookies 
Smernica Európskeho parlamentu a Rady 2002/58/ES z 12. júla 2002 odporúča úpravu povinností prevádzkovateľov webových sídiel v súvislosti s ukladaním cookies: 
Ak sú také zariadenia, napríklad cookies, určené na legitímne účely, ako je uľahčenie poskytovania služieb informačnej spoločnosti, ich používanie by malo byť povolené pod podmienkou, že užívatelia majú jasné a presné informácie v súlade so smernicou 95/46/ES o účele cookies alebo podobných zariadení tak, aby bolo zabezpečené, že užívatelia sú si vedomí informácií, ktoré sa nachádzajú na ich koncovom zariadení, ktoré používajú. Užívatelia by mali mať možnosť odmietnuť, aby bolo cookies alebo podobné zariadenie uložené na ich koncovom zariadení. Toto je zvlášť dôležité, ak užívatelia, iní než pôvodní, majú prístup ku koncovému zariadeniu a tým k akýmkoľvek údajom obsahujúcim súkromne citlivé informácie uložené v takom zariadení. Informácie a právo odmietnuť môžu byť ponúknuté jednorazovo pre používanie rôznych zariadení inštalovaných na koncovom zariadení užívateľa počas toho istého spojenia a tiež pre každé ďalšie používanie týchto zariadení počas ďalších spojení. Metódy poskytovania informácií, ponuka práva na odmietnutie alebo vyžiadanie súhlasu by sa mali vykonať spôsobom, ktorý je pre užívateľa najvhodnejší; prístup k špecifickému webovému obsahu môže byť ešte stále podmienený vedomým akceptovaním cookies...

Na Slovensku bola uvedená smernica implementovaná zákonom 351/2011 Z. z. o elektronických komunikáciách, ktorý v § 55, odseku 5 obsahuje tento text: 
Každý, kto ukladá alebo získava prístup k informáciám uloženým v koncovom zariadení užívateľa, je na to oprávnený iba ak dotknutý užívateľ udelil súhlas na základe jasných a úplných informácií o účele ich spracovania; za súhlas na tento účel sa považuje aj použitie príslušného nastavenia webového prehliadača alebo iného počítačového programu.
Slovenský zákon teda pokladá za súhlas s uložením cookies aj to, že užívateľ ich získavanie nezakázal vo svojom prehliadači. Tak či tak je poskytovateľ služieb povinný poskytnúť jasné a úplné informácie o účele ich spracovania. Niektorí slovenskí poskytovatelia teda už od roku 2015 zobrazujú užívateľovi informáciu o používaní cookies, ktorá žiada o súhlas ešte pred tým, než sa cookie uložia a iní len na stránke informujú že používajú cookies a až na podstránke je možné zistiť podrobnejšie informácie (zásady používania cookies a pod.) Dôsledok je ten, že viacero webov zobrazuje oznam o použití cookies, ktorý možno odstrániť len potvrdením súhlasu tlačidlom umiestneným na ňom (mimochodom: aj táto funkcionalita zvyčajne používa cookies).

Typický oznam obsahuje text: “Na našej webovej stránke používame súbory cookies. Prezeraním našej webovej stránky súhlasíte s ich používaním a ukladaním do Vášho prehliadača. Ďalšie informácie o spôsobe používania súborov cookies môžete nájsť kliknutím na tlačidlo "Viac info"“

Tento oznam neobsahuje možnosť používať stránku bez nutnosti ukladať jej cookie. Ak nebola celá stránka primerané prepísaná, potom aj bez explicitného vyjadrenia súhlasu a zatvorení tohto oznamu sa bude server pokúšať ukladať cookie u používateľa. Je to rovnaká situácia ako pred smernicou EÚ, keď sa weby nemuseli na cookies pýtať. Škodlivé webové sídlo (website) si nebude pýtať súhlas s používaním cookies. Ak máte podozrenie na zneužitie cookies najlepšie je daný web ani nenavštíviť.

Referencie

Zdroj 

HTTP
Počítačová bezpečnosť
Počítačová terminológia