Mit értenek az informatikában a HTTP-süti – angolul: cookie (kuki) – alatt?

Röviden igyekszem összefoglalni azt, amit manapság az olyan sokat emlegetett HTTP-sütiről (HTTP-cookie-ról) tudni érdemes – a teljesség igénye nélkül, de mindenképpen a pontosságra és minél több gyakran felmerülő kérdés megválaszolására törekedve.

 

Mi az a HTTP-süti? Röviden a cookie-ról

A HTTP-süti – vagy röviden csak süti (vagy kuki az angol cookie után) – egy információcsomag, amelyet (általában) a webszerver hoz létre és küld a webböngészőnek. A böngésző a szervertől kapott cookie-kat külön könyvtárban tárolja a felhasználó számítógépén (laptopján, táblagépén, okostelefonján vagy bármilyen webböngészővel rendelkező eszközén) és minden alkalommal, amikor a böngésző egy kérést küld a szervernek (“kérem az XY weblap tartalmát”), a kéréssel együtt elküldi a (kért weblaphoz kapcsolódó) tárolt sütiket is, így a webszerver a kapott kukik segítségével az adott kérést összekötheti az előző (ugyanonnan érkező) kérésekkel.

 

Mihez is hasonlítsam? A cookie és a hivatalos levelezés

A HTTP-sütik segítségével történő webböngésző-webszerver kommunikációt a hivatalos levelezéshez lehetne hasonlítani. Mikor az egyik hivatalnak küldünk egy levelet, akkor a kapott válaszlevél (jellemzően) tartalmaz egy azonosító számot; ha a továbbiakban ezt megadva küldjük a leveleinket, akkor a hivatal a levelezést egyben kezeli – általában az ügyintéző végig ugyanaz marad –, viszont ha leveleinket azonosítószám nélkül küldjük, akkor nincs garancia arra, hogy az előzőekkel összefogják. Az is előfordulhat, hogy mindegyik levél külön ügyintézőhöz kerül és semmilyen információjuk nem lesz a korábbi kommunikációról.

 

A HTTP-süti célja és haszna

A cookie célja az, hogy segítségével az alapvetően állapotmentes HTTP tranzakcióba be lehessen vezetni az állapot fogalmát, ugyanis a sütik hiányában minden egyes weblap (weboldal vagy valamilyen más webes erőforrás) lekérése egymástól teljesen független események számít.

 

A kuki (süti) gyakorlati haszna

Amikor a webszerver a böngészőtől érkező kérésben talál egy cookie-t – ilyen lehet például a PHP-session-id süti, ami (általában) egy véletlenszám, és az adott munkamenetet, azaz az aktuális böngészést azonosítja a kezdetétől a végéig (órákat, napokat, heteket, hónapokat vagy akár éveket átívelve), akkor ennek a kukinak a segítségével össze tudja kötni a webszerver az aktuális kérést a korábban ugyanonnan érkező kérésekkel. Így a cookie-k lehetőséget biztosítanak arra, hogy folyamatosan bejelentkezve maradjunk a levelező rendszerben vagy a közösségi oldalon és “emlékezzen” a webhely a webshop-os bevásárlókosár vagy a kitöltött adatlap tartalmára akkor is, ha véletlenül bezártuk a böngészőt. Hasznos továbbá arra, hogy a webgazdák számára statisztikák készülhessenek a weboldalt használók szokásairól. Ez utóbbi persze visszatetszést kelthet egyesekben, de akit ez zavar találhat bőven megoldást ennek kivédésére, pl.: meghatározott cookiek vagy akár teljes domain nevek tiltása vagy privát (inkognitó) böngészési mód. Ez utóbbi esetben ugyan a böngésző használja a cookie-kat, de úgy mintha azok egy új, eddig az adott webhely számára ismeretlen felhasználóhoz kapcsolódnának, továbbá a böngészés alatt létrehozott sütik a privát böngésző bezárásakor törlődnek.

 

A cookie felépítése

 

Leírás Példa
Name A süti neve, melyben a következő karakterek elfogadottak: (angol) kis- és nagybetűk, számok, továbbá a ! # $% & ‘* + -. ^ _ ` | ~ karakterek. wordpress_test_cookie
Value A süti értéke, melyben a következő karakterek szerepelhetnek: (angol) kis- és nagybetűk, számok, továbbá a ! # $ % & ‘ ( ) * + – . / : < = > ? @ [ ] ^ _ ` { | } ~ karakterek. WP+Cookie+check
Expires A süti lejárati ideje (időpecsét, ameddig érvényes) – a lejárati időt követően a süti már nem kerül elküldésre a szervernek. Wed, 22-Aug-2018 14:38:01 GMT
Domain Domain név – (a szerver) ahonnan jött a kuki; ide kerül visszaküldésre.
  • kisandras.hu – csak a kisandras.hu-ra
  • .kisandras.hu – ekkor a kisandras.hu aldomainjeinek az elérésekor is elküldésre kerül
Path Elérési út – az URL elérési út része, ahova a cookie visszajuthat.
  • / – a domain névhez tartozó bármely oldal lekérésekor  elküldésre kerül
  • /cookie-info/ – csak az adott aloldal, illetve az ezen oldal alá tartozó oldalak lekérése esetén kerül elküldésre
Secure Biztonságos kapcsolatot igényel-e? A böngészőt arra utasítja, hogy a sütit csak biztonságos / titkosított kapcsolaton (https) keresztül küldje el. Secure – nincs társított érték, csak az attribútum jelenléte jelzi, hogy a működését engedélyezni kell.
HttpOnly Csak http vagy https kapcsolaton keresztül használható-e? A böngészőt arra utasítja, hogy a sütit csak http vagy https kapcsolaton keresztül használja, azaz ne férjen ahhoz hozzá a kliens oldalon futó script nyelvű (például JavaScript) program. HttpOnly – nincs társított érték, csak az attribútum jelenléte jelzi, hogy a működését engedélyezni kell.

 

Hogyan lehet létrehozni sütiket?

A cookie-kat jellemzően a webszerver hozza létre, de létrehozhat a kiszolgálón futó CGI-program és a böngészőben végrehajtott kliensoldali script (például JavaScript) is.

 

Példa a HTTP-cookie létrehozására

Az alábbi kód egy lehetséges webszerver által küldött válasz része lehet, amivel három sütit hoz létre a kliens böngészője segítségével:

HTTP/1.0 200 OK
Set-Cookie: id=1a2b3c4e5f6a7b8c; Expires=Tue, 28 Aug 2018 14:37:38 GMT; Path=/; Domain=.kisandras.hu; HttpOnly
Set-Cookie: email=web@kisandras.hu; Path=/kapcsolat/; Domain=kisandras.hu; Secure; HttpOnly
Set-Cookie: language=hu-hu; Expires=Thu, 21 Aug 2018 14:37:38 GMT; Path=/; Domain=.kisandras.hu

Az eslő süti neve “id”, értéke pedig egy 16-os számrendszerbeli szám: “1a2b3c4e5f6a7b8c”.  Ez lehet egy olyan webszerver által generált egyedi azonosító, aminek a segítségével meg lehet különböztetni az egyes böngészőket – egy konkrét személy beazonosítására önmagában alkalmatlan. 2018 augusztus 28 14:37:38-ig kerül elküldésre a kisandras.hu, illetve annak bármely aldoménje esetén bármely oldal lekérésekor. A süti kiolvasása vagy módosítása csak HTTP vagy HTTPS kapcsolaton keresztül lehetséges. Kliens oldali script nyelvű program nem férhet hozzá (pl.: JavaScript).

A második cookie neve “email”, értéke pedig egy email cím: “web@kisandras.hu”. Ez lehet egy kapcsolati űrlap címzettje. Mivel nincs lejárati dátum megadva, a böngésző bezársakor törlődni fog. A kisandras.hu/kapcsolat/ valamint az ezen oldal alá tartozó oldalalak lekérésekor kerül elküldésre, pl.: kisandras.hu/kapcsolat/ajanlatkero-urlap/. Csak HTTPS (titkosított) kapcsolaton kereszül lehet elküldeni. Kliens oldali script nyelvű program nem férhet hozzá (pl.: JavaScript).

A harmadik kuki neve “language”, értéke pedig: “hu-hu”. Ennek segítségével a kiválasztott nyelvet lehet “megjegyeztetni” a weboldallal. 2018 augusztus 21 14:37:38-ig (azaz egy héttel rövidebb ideig mint az “id” süti) kerül elküldésre a kisandras.hu domainen található bármely oldal lekérésekor. Kliens oldali script nyelvű programmal is beállítható (pl.: JavaScript) és titkosítás nélkül küldhető a webszervernek.

 

A cookie-k fajtái

A felhasználás célja és módja szempontjából a sütiket különböző csoportokba sorolják. Egy lehetséges csoportosítást ismertetek most.

 

Munkamenet süti (session cookie)

A munkamenet süti – angolul: session cookie; vagy nevezik még így is: in-memory cookie (memóriabeli süti), transient cookie (átmeneti süti) vagy non-persistent cookie (nem állandó süti) – csak ideiglenesen, a memóriában létező süti. Nincs lejárati dátuma és a böngésző bezárásakor törlődik. Ezek jellemzően egy webhely helyes működéshez feltétlenül szükségesek.

 

Állandó (tartós) süti (persistent cookie)

Az állandó (tartós) süti – angolul: persistent cookie – egy előre meghatározott ideig marad “életben”, érvényességi ideje terjedhet néhány másodperctől akár évekig is. A böngésző bezárását követően is a számítógépen maradhat egy elmentett fájl formájában és a következő böngészés alkalmával újra kiolvasásra és felhasználásra kerülhet (feltéve, hogy még nem járt le).

A tartós sütiket jellemzően a felhasználói élmény fokozására, forgalmi statisztika készítésére és hirdetéskezelési célokra használják. Segítségükkel megoldható többek között az, hogy bejelentkezve maradjon a felhasználó a weboldalon vagy megjegyezzen űrlapadatokat, így azok a felhasználó számítógépén maradhatnak és nem kell azokat a webszervernek tárolni (kezelni az adatokat). A webgazda forgalmi adatokat gyűjthet és statisztikákat készíthet segítségükkel így javíthatja az oldal felépítését vagy azt a felhasználók igényének megfelelően fejlesztheti tovább. Megfelelő felhasználás mellett pedig a hirdetések pontosabb célzásához is segítséget nyújthat.

 

Biztonságos süti (secure cookie)

A biztonságos süti – angolul: secure cookie – csak biztonságos (titkosított) kapcsolaton keresztül (HTTPS) kerülhet továbbításra, így lehet csökkenteni a lehallgatás valószínűségét. Olyan adatok tárolására használhatják, amely a webszerver felé küldött kérések lehallgatásakor sem juthat harmadik fél birtokába, pl.: jelszavak, bankkártya adatok, személyes adatok, stb.

Munkamenet (session) süti

szöveg…

Munkamenet (session) süti

szöveg…

Munkamenet (session) süti

szöveg…

Munkamenet (session) süti

szöveg…

Munkamenet (session) süti

szöveg…

 

A cookie-k használatának letiltása

Ha a sütik használata az adott böngészőben tiltva van, akkor a webszerver minden egyes kérést úgy kezel, mintha az egy teljesen új (az előzőektől független) kérés lenne, így a webhelyek nagy része gyakorlatilag használhatatlanná válik: nem lehet bejelentkezni, nem működik a bevásárló kosár, vagy akár minden kattintásnál felugrik az ablak, ami a cookie-k használatára figyelmeztet, stb.

A HTTP-süti törlése

szöveg…

A HTTP-süti és az adatvédelem – a GDPR és egyéb biztonsági kérdések

szöveg…

 

GDPR röviden

szöveg…

 

Egyéb biztonsági kérdések

Érdemes még megjegyezni, hogy (elméletileg)

  • a böngészők garantálják, hogy egy szerver csak a saját domain-jéhez, illetve aldoménjaihoz tudjon kukikat beállítani
  • a böngészők nem engedik meg, hogy egy webhely egy másik (domain-en található) webhely cookijaihoz hozzáférjen
  • a privát vagy inkognitó böngészési módban bár a cookie-k nem kerülnek elmentésre a számítógépre, de azok használata egy-egy böngészés alkalmával alapértelmezetten engedélyezettek a webböngészőkben (a privát böngésző bezárásakor törlődnek a süti-k és egyéb adatok)

És miért csak elméletileg? Mert hiba a legjobb számítógépes programokban is előfordulhat – nem véletlenül kell frissíteni folyton (ha épen nem megy automatikusan) a böngészőt, az operációs rendszert, meg azt a sok-sok hasznos programot!

 

Kik férhetnek hozzá a sütikhez, illetve az azokban tárolt adatokhoz?

Röviden összefoglalva:

  • maga a felhasználó – böngésző segítségével azokat megnézheti és akár (egyenként vagy csoportosan) törölheti
  • a webgazda, ha a webszerver azokat elmentette
  • harmadik fél, a kliens oldalon (azaz a felhasználó böngészőjében) futó JavaScript segítségével, ha a webgazda az ehhez szükséges kódot beépíti a weblapba és az adott cookie beállítása ezt lehetővé teszi (azaz a cookie HttpOnly attribútuma nincs beállítva)

 

Hogyan férhetnek mégis illetéktelenek cookie adatokhoz?

Csak érdekesség kedvéért leírok egy lehetséges illetéktelen (vagy az adott lehetőségek miatt inkább csak illetlen) hozzáférési módot: …

 

Jótanács a végére

Fogadd el nyugodtan a cookie szabályzatot, legalább az a folyton útban lévő sáv eltűnik a képernyőről és böngészhetsz nyugodtan (a legtöbb webhelyen így is, úgy is használják a sütiket). Ha viszont zavar, hogy esetleg statisztika készülhet a böngészésedről, használd a privát (vagy inkognitó) böngészési módot – a legtöbb webhelynél ez elegendő a “személy” elrejtéséhez; viszont jó ha tudod, hogy ez nem működik a Google webhelyeivel kapcsolatban: (kukival vagy anélkül) szinte már az első kapcsolódásnál (legyen szó bármely szolgáltatásáról is) a Google már nagy eséllyel tudni fogja, hogy “ki” vagy! No de ez már egy másik történet.

Jó böngészést!