HTTP cookie
Jako cookie (anglicky koláček, oplatka, sušenka) se v protokolu HTTP označuje malé množství dat, kteráWWW server pošle prohlížeči, který je uloží na počítači uživatele. Při každé další návštěvě téhož serveru pak prohlížeč tato data posílá zpět serveru. Cookies běžně slouží k rozlišování jednotlivých uživatelů, ukládají se do nich uživatelské předvolby apod. Myšlenku cookies navrhl v 90. letech Lou Montulli, tehdy pracující u firmy Netscape Communications. Název cookie – sušenka asociuje zvyklost ze Spojených států nebo Velké Británie nabídnout účastníkům určitého zájmového spolku nebo skupiny jejich oblíbenou sušenku pro vytvoření příjemnější atmosféry.
Technické podrobnosti
Přestože většina prohlížečů cookies podporuje, jiné jednodušší prohlížeče (např. na mobilních zařízeních) je podporovat nemusejí; navíc cookies lze ve většině prohlížečů zakázat. Pokud prohlížeč cookies podporuje, měl by splňovat tyto minimální limity:
· podpora alespoň 300 cookies[1]
· alespoň 4 KiB na data jedné cookie
· alespoň 20 cookies na doménu[2]
· pokud některé prohlížeče nemohou přijmout větší cookie, nesmí „oříznout“ jeho obsah, ale nepřijmout ho jako takové.
Cookies se ukládají na straně klienta (uživatele) jako krátké textové soubory (např. pro Internet Explorer veWindows XP do adresáře c:\Documents and Settings\Jméno uživatele\Cookies) a to pro každé webové místo (website).
Funkce cookies je definována v RFC 2965 pomocí HTTP hlaviček Set-Cookie (nebo její novější variantySet-Cookie2) a Cookie. Hlavička Set-Cookie je poslána v odpovědi serveru a obsahuje:
· název (identifikátor) cookie
· data cookie (omezená prohlížečem, vyžadována je podpora alespoň pro 4096 byte),
· dobu platnosti cookie (resp. čas, kdy hodnota vyprší),
· doména, pro kterou cookie platí,
· adresář na serveru, pro který cookie platí.
Pokud má prohlížeč alespoň jednu cookie pro daný server (a daný adresář na něm), posílá s každým dotazem danému serveru i hlavičku Cookie, která obsahuje stejná data, která server původně poslal.
V prohlížečích s podporou JavaScriptu lze v tomto jazyku ke cookie přistupovat přes vlastnostdocument.cookie ve formě:název_1._cookie=hodnota_1._cookie;název_2._cookie=hodnota_2._cookie;…. Páry název:hodnota jsou odděleny středníkem, pokud má hodnota obsahovat středník, je obalena uvozovkami.
Cookie lze nastavovat taktéž na straně serveru (podle možností skriptovacího jazyka) – nastavení hodnoty cookie představuje v podstatě přidání HTTP hlavičky do odpovědi serveru (z toho důvodu musí nastavení proběhnout před vypsání čehokoli na výstup). Například, pro jazyk PHP k tomu slouží funkce setcookie se syntaxí:
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
Bezpečnost a ochrana soukromí
Cookies neznamenají žádné nebezpečí pro počítač jako takový. Přesto cookies mohou být nebezpečné pro ochranu soukromí. Navštívený web si totiž může ukládat do cookies jakékoliv informace, které o návštěvníkovi zjistí a může tak postupně zjišťovat zájmy konkrétního návštěvníka. Které stránky navštěvuje, jaké informace vyhledává, jak často daný web navštěvuje apod.
Těchto informací se dá posléze i bez vědomí návštěvníka využívat pro cílenou reklamu, statistické vyhodnocování chování návštěvníků, apod.
Tyto informace však lze získávat i bez cookies, proto toto jejich využití nemůže být považováno za zvlášť nebezpečné.
Cookies lze zneužít zejména tehdy, pokud získá útočník přístup k počítači uživatele, neboť cookies na počítači nejsou nijak chráněny. Pak lze předstírat např. cizí identitu.