Cookies (nÄkdy âsuÅ¡enkyâ) jsou malé datové ÅetÄzce, které jsou uloženy pÅÃmo v prohlÞeÄi. Jsou souÄástà protokolu HTTP a jsou definovány ve specifikaci RFC 6265.
Cookies obvykle nastavuje webový server v HTTP hlaviÄce odpovÄdi Set-Cookie. Pak je prohlÞeÄ automaticky pÅidává do (témÄÅ) každého požadavku na stejnou doménu do HTTP hlaviÄky Cookie.
JednÃm z nejrozÅ¡ÃÅenÄjÅ¡Ãch pÅÃpadů jejich použità je autentifikace:
- Po pÅihlášenà server poÅ¡le v odpovÄdi HTTP hlaviÄku
Set-Cookie, v nÞ nastavà cookie s âunikátnÃm identifikátorem pÅihlášenÃâ. - Když bude pÅÃÅ¡tÄ poslán požadavek na stejnou doménu, prohlÞeÄ poÅ¡le po sÃti tuto cookie v HTTP hlaviÄce
Cookie. - Tak se server dozvÃ, kdo uÄinil požadavek.
Ke cookies můžeme pÅistupovat i z prohlÞeÄe, a to pomocà vlastnosti document.cookie.
Cookies a jejich atributy s sebou pÅinášejà mnoho záludnostÃ. V této kapitole je podrobnÄ probereme.
NaÄÃtánà z document.cookie
Ukládá si váš prohlÞeÄ nÄjaké cookies z tohoto sÃdla? PodÃvejme se:
// Na javascript.info použÃváme Google Analytics pro statistiku,
// takže by tam nÄjaké cookies mÄly být
alert( document.cookie ); // cookie1=hodnota1; cookie2=hodnota2;...
Hodnota document.cookie se skládá z dvojic název=hodnota, oddÄlených ;. Každá z nich pÅedstavuje samostatnou cookie.
Chceme-li najÃt konkrétnà cookie, můžeme rozdÄlit document.cookie podle ; a pak najÃt správný název. Můžeme k tomu použÃt regulárnà výraz nebo funkce polÃ.
Ponecháváme to ÄtenáÅi jako cviÄenÃ. Na konci této kapitoly najdete nÄkolik pomocných funkcÃ, které vám pomohou manipulovat s cookies.
Zápis do document.cookie
Do document.cookie můžeme zapisovat. Nenà to vÅ¡ak datová vlastnost, nýbrž pÅÃstupová vlastnost (getter/setter). PÅiÅazenà do nà se zpracovává speciálnÃm způsobem.
Operace zápisu do document.cookie zmÄnà jen cookie, která je v nà uvedena, a ostatnà cookies ponechá nezmÄnÄné.
NapÅÃklad následujÃcà volánà nastavà cookie s názvem uživatel a hodnotou Jan:
document.cookie = "uživatel=Jan"; // zmÄnà jen cookie s názvem 'uživatel'
alert(document.cookie); // zobrazà všechny cookies
Když si jej spustÃte, uvidÃte pravdÄpodobnÄ nÄkolik cookies. Je to tÃm, že operace document.cookie= nepÅepÃÅ¡e vÅ¡echny cookies, ale jen nastavà uvedenou cookie uživatel.
Technicky mohou název a hodnota obsahovat jakékoli znaky. Aby bylo zachováno platné formátovánÃ, mÄly by být zakódovány vestavÄnou funkcà encodeURIComponent:
// speciálnà znaky (mezery) musejà být zakódovány
let název = "muj nazev";
let hodnota = "Jan Novak";
// zakóduje cookie jako muj%20nazev=Jan%20Novak
document.cookie = encodeURIComponent(název) + '=' + encodeURIComponent(hodnota);
alert(document.cookie); // ...; muj%20nazev=Jan%20Novak
Je tady nÄkolik omezenÃ:
- PomocÃ
document.cookiemůžeme nastavit nebo zmÄnit pouze jednu cookie souÄasnÄ. - Dvojice
název=hodnotaby po zakódovánà funkcÃencodeURIComponentnemÄla pÅekroÄit 4 KB. Do cookie tedy nemůžeme uložit nic velkého. - Celkový poÄet cookies na jednu doménu je omezen pÅibližnÄ na 20 nebo vÃce, pÅesný limit závisà na prohlÞeÄi.
Cookies majà nÄkolik atributů. Mnoho z nich je důležitých a mÄli bychom je nastavit.
Atributy jsou vyjmenovány po klÃÄ=hodnota a jsou oddÄleny ;, napÅÃklad:
document.cookie = "uživatel=Jan; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT"
domain
domain=site.com
Atribut domain definuje, kde je cookie dostupná. V praxi vÅ¡ak existujà urÄitá omezenà a nemůžeme nastavit jakoukoli doménu.
Nenà žádný způsob, jak uÄinit cookie dostupnou z jiné domény druhého Åádu, takže other.com nikdy nezÃská cookie nastavenou na site.com.
To je bezpeÄnostnà omezenÃ, které nám umožÅuje ukládat do cookies důvÄrná data, která by mÄla být dostupná jen na jednom sÃdle.
StandardnÄ je cookie dostupná jen na doménÄ, která ji nastavila.
ProsÃme vÅ¡imnÄte si, že standardnÄ nenà cookie sdÃlena se subdoménou, napÅÃklad forum.site.com.
// pokud nastavÃme cookie na webovém sÃdle site.com...
document.cookie = "uživatel=Jan"
// ...neuvidÃme ji na forum.site.com
alert(document.cookie); // uživatel nenÃ
â¦To vÅ¡ak můžeme zmÄnit. Jestliže chceme umožnit subdoménám jako forum.site.com zÃskávat cookie nastavenou na site.com, můžeme to provést.
Aby k tomu doÅ¡lo, mÄli bychom pÅi nastavovánà cookie na site.com explicitnÄ nastavit atribut domain na koÅenovou doménu: domain=site.com. Pak tuto cookie uvidà vÅ¡echny subdomény.
PÅÃklad:
// na site.com
// zpÅÃstupnÃme tuto cookie na jakékoli subdoménÄ *.site.com:
document.cookie = "uživatel=Jan; domain=site.com"
// pozdÄji
// na forum.site.com
alert(document.cookie); // obsahuje cookie uživatel=Jan
V historii fungovalo stejným způsobem i domain=.site.com (s teÄkou pÅed site.com), i to umožÅovalo pÅÃstup ke cookie ze subdomén. Nynà se teÄky na zaÄátku názvů domén ignorujÃ, ale nÄkteré prohlÞeÄe mohou odmÃtnout nastavit cookie, která tyto teÄky obsahuje.
Když to shrneme, atribut domain umožÅuje zpÅÃstupnit cookie na subdoménách.
path
path=/mypath
Prefix URL cesty musà být absolutnÃ. Tento atribut zpÅÃstupÅuje cookie stránkám pod touto cestou. StandardnÄ je to aktuálnà cesta.
Pokud je cookie nastavena s atributem path=/admin, bude viditelná na stránkách /admin a /admin/something, ale ne na /home, /home/admin nebo /.
Obvykle bychom mÄli nastavit path na koÅenový adresáÅ: path=/, aby byla cookie dostupná ze vÅ¡ech stránek na tomto sÃdle. Pokud tento atribut nenà nastaven, je standardnÄ vypoÄÃtáván touto metodou.
expires, max-age
StandardnÄ, jestliže cookie neobsahuje jeden z tÄchto atributů, zmizà pÅi zavÅenà prohlÞeÄe nebo záložky. Takové cookies se nazývajà âsession cookiesâ.
Aby cookies zůstala naživu i po zavÅenà prohlÞeÄe, můžeme nastavit atribut expires nebo max-age. Pokud nastavÃme oba, má pÅednost max-age.
expires=Tue, 19 Jan 2038 03:14:07 GMT
Datum expirace cookie definuje Äas, kdy ji prohlÞeÄ automaticky smaže (podle Äasového pásma prohlÞeÄe).
Datum musà být pÅesnÄ v tomto formátu v Äasovém pásmu GMT (Greenwichský stÅednà Äas). Můžeme jej zÃskat metodou datum.toUTCString. NapÅÃklad můžeme nastavit cookie, aby expirovala za 1 den:
// +1 den od nynÄjÅ¡ka
let datum = new Date(Date.now() + 86400e3);
datum = datum.toUTCString();
document.cookie = "uživatel=Jan; expires=" + datum;
Pokud nastavÃme expires na datum v minulosti, bude cookie smazána.
max-age=3600
Tento atribut je alternativou k expires a specifikuje expiraci cookie v sekundách od tohoto okamžiku.
Pokud jej nastavÃme na nulu nebo zápornou hodnotu, cookie bude smazána:
// cookie bude odstranÄna za +1 hodinu od nynÄjÅ¡ka
document.cookie = "uživatel=Jan; max-age=3600";
// smažeme cookie (necháme ji expirovat právÄ teÄ)
document.cookie = "uživatel=Jan; max-age=0";
secure
secure
Tato cookie může být pÅenesena pouze v HTTPS.
StandardnÄ, jestliže nastavÃme cookie na http://site.com, objevà se i na https://site.com a naopak.
Je to proto, že cookies jsou založeny na doménÄ a nerozliÅ¡ujà mezi protokoly.
S tÃmto atributem platÃ, že jestliže je cookie nastavena na https://site.com, neobjevà se pÅi pÅÃstupu na stejné sÃdlo pÅes HTTP jako http://site.com. Má-li tedy cookie citlivý obsah, který by nikdy nemÄl být odeslán pÅes nezaÅ¡ifrovaný HTTP, je pÅepÃnaÄ secure ta správná vÄc.
// pÅedpokládáme, že nynà jsme na https://
// nastavÃme cookie jako bezpeÄnou (dostupnou jen pÅes HTTPS)
document.cookie = "uživatel=Jan; secure";
samesite
DalÅ¡Ãm bezpeÄnostnÃm atributem je samesite, který je navržen k ochranÄ pÅed tzv. XSRF (cross-site request forgery) útoky.
Abychom pochopili, jak funguje a kdy je užiteÄný, podÃvejme se na XSRF útoky.
XSRF útok
PÅedstavte si, že se pÅipojÃte na sÃdlo bank.com. To znamená: máte z tohoto sÃdla autentifikaÄnà cookie. Váš prohlÞeÄ ji posÃlá na bank.com s každým požadavkem, takže vás sÃdlo rozezná a provede vÅ¡echny citlivé finanÄnà operace.
Když si nynà prohlÞÃte web v jiném oknÄ, náhodou se dostanete na jinou stránku evil.com. Tato stránka obsahuje kód v JavaScriptu, který odeÅ¡le na bank.com formuláŠ<form action="https://bank.com/pay"> s poli, která spustà transakci z vaÅ¡eho konta na hackerovo.
ProhlÞeÄ posÃlá cookies pokaždé, když navÅ¡tÃvÃte sÃdlo bank.com, i když byl formuláŠodeslán z evil.com. Banka vás tedy rozezná a provede platbu.
Tento útok se nazývá âCross-Site Request Forgeryâ (âpadÄlánà požadavků z jiného sÃdlaâ, zkrácenÄ XSRF).
SkuteÄné banky jsou pÅed nÃm samozÅejmÄ chránÄny. VÅ¡echny formuláÅe generované sÃdlem bank.com obsahujà speciálnà pole, tzv. âXSRF ochranný tokenâ, který zlá stránka nedokáže generovat nebo vytáhnout ze vzdálené stránky. Může tam poslat formuláÅ, ale nemůže zÃskat data zpÄt. SÃdlo bank.com kontroluje tento token v každém formuláÅi, který pÅijme.
Implementace takové ochrany ovÅ¡em zabere nÄjaký Äas. MusÃme zajistit, aby požadované pole s tokenem obsahoval každý formuláÅ, a musÃme také kontrolovat vÅ¡echny požadavky.
PoužÃvánà cookie atributu samesite
Cookie atribut samesite poskytuje jiný způsob ochrany pÅed takovými útoky, který by (teoreticky) nemÄl vyžadovat âXSRF ochranné tokenyâ.
Má dvÄ možné hodnoty:
samesite=strict
Cookie s atributem samesite=strict nebude nikdy odeslána, pokud uživatel pÅicházà odjinud než ze stejného sÃdla.
Jinými slovy, kdykoli uživatel následuje odkaz ze svého emailu, odesÃlá formuláŠz evil.com nebo provádà jakoukoli operaci pocházejÃcà z jiné domény, cookie se neodeÅ¡le.
Jestliže autentifikaÄnà cookies majà atribut samesite=strict, XSRF útok nemá Å¡anci na úspÄch, protože požadavek odeslaný z evil.com pÅijde bez cookies. SÃdlo bank.com tedy uživatele nepozná a platbu neprovede.
Tato ochrana je pomÄrnÄ spolehlivá. Cookie s atributem samesite=strict odeÅ¡lou jen operace pÅicházejÃcà z bank.com, napÅ. odeslánà formuláÅe z jiné stránky na bank.com.
Má vÅ¡ak urÄitou nevýhodu.
Když uživatel následuje legitimnà odkaz na bank.com, napÅÃklad ze svých poznámek, bude pÅekvapen, že ho bank.com nepozná. Cookies se samesite=strict se v takovém pÅÃpadÄ samozÅejmÄ neodeÅ¡lou.
To můžeme pÅekonat použitÃm dvou cookies: jedné pro âobecné rozpoznávánÃâ, jen aby Åekla: âAhoj, Janeâ, a druhé, která bude mÃt samesite=strict, pro operace mÄnÃcà data. Pak osoba pÅicházejÃcà odjinud spatÅà uvÃtánÃ, ale platby musejà být spuÅ¡tÄny z webového sÃdla banky, aby byla odeslána druhá cookie.
samesite=lax(totéž jakosamesitebez hodnoty)
Toto je uvolnÄnÄjšà pÅÃstup, který také chránà pÅed XSRF a navÃc nenarušà uživatelovo pohodlÃ.
Režim lax zakazuje prohlÞeÄi odesÃlat cookies pÅi pÅÃchodu z jiného sÃdla, podobnÄ jako strict, ale s jednou výjimkou.
Cookie se samesite=lax je odeslána, jestliže jsou splnÄny obÄ tyto podmÃnky:
-
HTTP metoda je âbezpeÄnáâ (napÅ. GET, ale ne POST).
Celý seznam bezpeÄných HTTP metod se nacházà ve specifikaci RFC 7231. Jsou to metody, které by se mÄly použÃvat ke ÄtenÃ, ale ne k zápisu dat. NesmÄjà provádÄt žádné operace, které mÄnà data. Následovánà odkazu je vždy GET, tedy bezpeÄná metoda.
-
Operace provádà navigaci na nejvyššà úrovni (mÄnà URL v adresové liÅ¡tÄ prohlÞeÄe).
Zpravidla tomu tak je, ale jestliže je navigace provádÄna v
<iframe>, nenà to na nejvyššà úrovni. NavÃc metody JavaScriptu pro sÃÅ¥ové požadavky žádnou navigaci neprovádÄjÃ.
Atribut samesite=lax tedy dÄlá to, že umožÅuje, aby nejbÄžnÄjšà operace âjdi na URLâ mÄla cookies. NapÅÃklad otevÅenà odkazu na webové sÃdlo z poznámek, které tyto podmÃnky splÅujÃ.
Ale cokoli složitÄjÅ¡Ãho, napÅÃklad sÃÅ¥ový požadavek z jiného sÃdla nebo odeslánà formuláÅe, cookies ztratÃ.
Pokud vám to vyhovuje, pÅidánÃm samesite=lax pravdÄpodobnÄ nepokazÃte uživatelovo pohodlà a zajistÃte ochranu.
CelkovÄ je samesite vynikajÃcà atribut.
Má však nevýhodu:
samesiteje ignorován (nenà podporován) velmi starými prohlÞeÄi, zhruba z roku 2017 a starÅ¡Ãmi.
Jestliže se tedy s ochranou spolehneme výhradnÄ na samesite, staré prohlÞeÄe budou zranitelné.
Můžeme vÅ¡ak použÃt samesite spoleÄnÄ s jinými ochrannými prvky, napÅÃklad XSRF tokeny, abychom pÅidali ochrannou vrstvu a v budoucnu, až staré prohlÞeÄe vymizÃ, budeme pravdÄpodobnÄ moci XSRF tokeny zruÅ¡it.
httpOnly
Tento atribut nemá nic spoleÄného s JavaScriptem, ale pro úplnost jej musÃme uvést.
Webový server použÃvá k nastavenà cookie hlaviÄku Set-Cookie. Může také nastavit atribut httpOnly.
Tento atribut zakazuje JavaScriptu jakýkoli pÅÃstup k této cookie. Takovou cookie neuvidÃme a nemůžeme s nà manipulovat pomocà document.cookie.
PoužÃvá se jako pÅedbÄžné opatÅenà k ochranÄ pÅed útoky, pÅi nichž hacker vložà na stránku svůj vlastnà JavaScriptový kód a Äeká, až uživatel tuto stránku navÅ¡tÃvÃ. To by nemÄlo být vůbec možné, hackeÅi by nemÄli být schopni vložit svůj kód na naÅ¡i stránku, ale mohou existovat chyby, které jim to dovolÃ.
NormálnÄ, když se nÄco takového stane a uživatel navÅ¡tÃvà webovou stránku s hackerovým JavaScriptovým kódem, tento kód se spustà a zÃská pÅÃstup k document.cookie s uživatelskými cookies, které obsahujà autentifikaÄnà informace. To je Å¡patné.
Jestliže vÅ¡ak cookie je httpOnly, pak ji document.cookie nevidÃ, takže je chránÄna.
Dodatek: Funkce pro cookies
Následuje malá sada funkcà pro práci s cookies, které jsou pohodlnÄjšà než ruÄnà modifikace document.cookie.
Pro práci s cookies existuje mnoho knihoven, tyto funkce tedy sloužà pro demonstrativnà úÄely. Jsou vÅ¡ak plnÄ funkÄnÃ.
getCookie(název)
NejkratÅ¡Ãm způsobem, jak pÅistupovat ke cookie, je použÃt regulárnà výraz.
Funkce getCookie(název) vracà cookie s názvem název:
// vracà cookie se zadaným názvem
// nebo undefined, pokud nenà nalezena
function getCookie(název) {
let shoda = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return shoda ? decodeURIComponent(shoda[1]) : undefined;
}
Zde je new RegExp generován dynamicky, aby hledal ; název=<hodnota>.
ProsÃme vÅ¡imnÄte si, že hodnota cookie je zakódována, proto getCookie použÃvá k jejÃmu rozkódovánà zabudovanou funkci decodeURIComponent.
setCookie(název, hodnota, atributy)
Nastavà cookie s názvem název na hodnotu hodnota se standardnà path=/ (lze modifikovat pÅidánÃm standardnÃch hodnot dalÅ¡Ãch atributů):
function setCookie(název, hodnota, atributy = {}) {
atributy = {
path: '/',
// v pÅÃpadÄ potÅeby sem pÅidejte standardnà hodnoty dalÅ¡Ãch atributů
...atributy
};
if (atributy.expires instanceof Date) {
atributy.expires = atributy.expires.toUTCString();
}
let zmÄnÄnáCookie = encodeURIComponent(název) + "=" + encodeURIComponent(hodnota);
for (let klÃÄAtributu in atributy) {
zmÄnÄnáCookie += "; " + klÃÄAtributu;
let hodnotaAtributu = atributy[klÃÄAtributu];
if (hodnotaAtributu !== true) {
zmÄnÄnáCookie += "=" + hodnotaAtributu;
}
}
document.cookie = zmÄnÄnáCookie;
}
// PÅÃklad použitÃ:
setCookie('uživatel', 'Jan', {secure: true, 'max-age': 3600});
deleteCookie(název)
Cookie můžeme smazat tak, že jà nastavÃme záporný Äas expirace:
function deleteCookie(název) {
setCookie(název, "", {
'max-age': -1
})
}
ProsÃme vÅ¡imnÄte si, že když mÄnÃme nebo mažeme cookie, mÄli bychom použÃvat pÅesnÄ stejné atributy path a domain jako pÅi jejÃm nastavenÃ.
Všechno dohromady: cookie.js.
Dodatek: Cookies tÅetÃch stran
Cookie se nazývá âcookie tÅetà stranyâ, pokud je uložena jinou doménou než doménou stránky, kterou uživatel navÅ¡tÃvil.
NapÅÃklad:
-
Stránka na
site.comnaÄte banner z jiné stránky:<img src="https://ads.com/banner.png">. -
SpoleÄnÄ s tÃmto bannerem může vzdálený server na
ads.comnastavit hlaviÄkuSet-Cookies cookie napÅ.id=1234. Tato cookie pocházà z doményads.coma bude viditelná jedinÄ na doménÄads.com: -
PÅi dalÅ¡Ãm pÅÃstupu na
ads.comvzdálený server zÃská cookieida pozná uživatele: -
JeÅ¡tÄ důležitÄjšà je, že když se uživatel pÅesune ze
site.comna jiné sÃdloother.com, které také obsahuje banner, pakads.comtuto cookie rovnÄž zÃská, protože patÅÃads.com, takže pozná návÅ¡tÄvnÃka a bude sledovat jeho pÅesun mezi sÃdly:
Cookies tÅetÃch stran se kvůli své povaze tradiÄnÄ použÃvajà pro sledovacà a reklamnà služby. Jsou vázány k doménÄ svého původu, takže ads.com může sledovat stejného uživatele mezi různými sÃdly, pokud k nà tato sÃdla pÅistupujÃ.
NÄkterým lidem se pochopitelnÄ nelÃbÃ, když je nÄkdo sleduje, takže prohlÞeÄe umožÅujà takové cookies zakázat.
NavÃc nÄkteré modernà prohlÞeÄe uplatÅujà pro takové cookies speciálnà politiku:
- Safari cookies tÅetÃch stran vůbec neumožÅuje.
- Firefox má âÄerný seznamâ domén tÅetÃch stran, jejichž cookies tÅetÃch stran blokuje.
Jestliže naÄteme skript z domény tÅetà strany, napÅ. <script src="https://google-analytics.com/analytics.js">, a tento skript nastavà cookie pomocà document.cookie, pak taková cookie nenà cookie tÅetà strany.
Když skript nastavà cookie, nezáležà na tom, odkud skript pocházà â tato cookie bude patÅit doménÄ aktuálnà webové stránky.
Dodatek: GDPR
Toto téma nemá nic spoleÄného s JavaScriptem, je to jen nÄco, co musÃme mÃt pÅi nastavovánà cookies na pamÄti.
V EvropÄ platà legislativa nazvaná GDPR, která naÅizuje sadu pravidel pro webové stránky, aby respektovaly soukromà uživatelů. JednÃm z nich je vyžadovat od uživatele výslovné povolenà pro sledovacà cookies.
ProsÃme vÅ¡imnÄte si, že to platà jen pro sledovacÃ/identifikaÄnÃ/autorizaÄnà cookies.
Pokud tedy nastavujeme cookie, která jen ukládá nÄjakou informaci, ale nesleduje ani neidentifikuje uživatele, můžeme to svobodnÄ udÄlat.
Jestliže vÅ¡ak chceme nastavit cookie s autentifikacà pÅihlášenà nebo sledovacÃm ID, uživatel to musà povolit.
Webové stránky obecnÄ pÅistupujà ke GDPR dvÄma způsoby. PravdÄpodobnÄ jste už oba vidÄli na webu:
-
Pokud webové sÃdlo chce ukládat sledovacà cookies jen pro autentifikované uživatele.
Aby to mohlo dÄlat, registraÄnà formuláŠby mÄl obsahovat checkbox napÅ. âsouhlasÃm s politikou ohlednÄ soukromÃâ (která popisuje, jak se cookies použÃvajÃ), uživatel jej musà zaÅ¡krtnout a pak webové sÃdlo může svobodnÄ nastavovat autentifikaÄnà cookies.
-
Pokud webové sÃdlo chce ukládat sledovacà cookies pro vÅ¡echny.
Aby to webové sÃdlo mohlo legálnÄ provádÄt, zobrazà novÄ pÅÃchozÃm uživatelům modálnà âvyskakovacà oknoâ a vyžaduje od nich souhlas s použÃvánÃm cookies. Pak je webové sÃdlo může nastavovat a nechat uživatele prohlÞet si jeho obsah. Pro nové návÅ¡tÄvnÃky to ovÅ¡em může být otravné. Nikomu se nelÃbÃ, když mÃsto obsahu stránek vidà vyskakovacà okno, na které musà kliknout. Ale GDPR vyžaduje výslovný souhlas.
GDPR se týká nejen cookies, ale i jiných záležitostà ohlednÄ ochrany soukromÃ. To je vÅ¡ak mimo naÅ¡e téma.
ShrnutÃ
PÅÃstup k cookies poskytuje document.cookie.
- Operace zápisu mÄnà jen cookie, která je v nà uvedena.
- Název a hodnota musà být zakódovány.
- Velikost jedné cookie nesmà pÅesáhnout 4 KB. PoÄet povolených cookies v jedné doménÄ je pÅibližnÄ 20 a vÃce (závisà na prohlÞeÄi).
Atributy cookie:
path=/, standardnÄ aktuálnà cesta, uÄinà cookie viditelnou jen pod uvedenou cestou.domain=site.com, standardnÄ je cookie viditelná jen na aktuálnà doménÄ. Pokud je doména explicitnÄ nastavena, bude cookie viditelná i na subdoménách.expiresnebomax-agenastavà Äas expirace cookie. Nejsou-li uvedeny, cookie bude odstranÄna pÅi zavÅenà prohlÞeÄe.securezpůsobÃ, že cookie se bude posÃlat jen pÅes HTTPS.samesitezakáže prohlÞeÄi posÃlat cookie v požadavcÃch, které pÅicházejà odjinud než z tohoto sÃdla. Pomáhá chránit pÅed XSRF útoky.
NavÃc:
- ProhlÞeÄ může zakázat cookies tÅetÃch stran, napÅ. Safari to standardnÄ dÄlá. ProbÃhajà také práce na implementaci tohoto chovánà v Chrome.
- Když nastavujete sledovacà cookie pro obÄany EU, GDPR vyžaduje jejich svolenÃ.
KomentáÅe
<code>, pro nÄkolik Åádků je obalte znaÄkou<pre>, pro vÃce než 10 Åádků vložte odkaz na pÃskoviÅ¡tÄ (plnkr, jsbin, codepenâ¦)