Mik azok a cookie-k és mire valók?
Gyakran egy rosszul konfigurált cookie az, amely csendben megnyitja az utat a session-átvételhez egy weboldalon. Pedig az XSS elleni védelem és a CSRF védelem nem komplex architektúrán, hanem három attribútum helyes beállításán múlik.
Mik azok a cookie-k?
A HTTP cookie egy kis méretű adat, amelyet a webszerver küld a kliensnek – leggyakrabban egy webböngészőnek –, és amelyet a kliens eltárol, majd a későbbi HTTP-kérések során automatikusan visszaküld a szervernek.
A cookie-k létjogosultsága közvetlenül a HTTP-protokoll működéséből fakad. A HTTP alapvetően állapotmentes: a szerver két egymást követő kérés között nem rendelkezik információval arról, hogy ugyanaz a felhasználó kommunikál-e vele. A cookie ezt az hidalja át azzal, hogy a kliens és a szerver között perzisztens információt hordoz.
A gyakorlatban a cookie-k kulcs–érték párok formájában jelennek meg, amelyeket a szerver a válasz HTTP-fejlécében ad át a kliensnek. A böngésző ezeket minden további, az adott domainhez tartozó kérésnél visszaküldi.
Ez a mechanizmus teszi lehetővé:
- a felhasználó azonosítását,
- a bejelentkezett állapot fenntartását,
- az alkalmazás működéséhez szükséges kontextus megőrzését.
A modern webalkalmazások jelentős része elképzelhetetlen cookie-k nélkül, hiszen ezek biztosítják a felhasználói élmény folytonosságát és az alkalmazás logikai működését.
További tudnivalók a cookie-król
Fontos hangsúlyozni, hogy a cookie nem feltétlenül tartalmaz üzleti vagy személyes adatot. Sok esetben csupán egy azonosítót hordoz, amelyhez a szerveroldalon tartozik a tényleges állapot.
Technikai szempontból azonban mindig a kliens oldalon tárolódik, és a böngésző kezeli. Vagyis a felhasználó – vagy egy rosszindulatú szereplő – számára potenciálisan elérhető. Ez a tulajdonság alapvetően meghatározza a cookie-kkal kapcsolatos biztonsági kockázatokat.
Mivel a cookie automatikusan elküldésre kerül minden releváns HTTP-kérés során, különösen érzékeny szerepet tölt be az autentikáció és autorizáció területén. Egy kompromittált cookie elegendő lehet a felhasználói munkamenet átvételéhez, még akkor is, ha maga a jelszó nem kerül ki. Ezért a cookie nem pusztán kényelmi eszköz, hanem a webes biztonság központi eleme.
A cookie biztonsága tehát nem kizárólag a tárolt adattól függ, hanem attól is, milyen korlátozások vonatkoznak a használatára.
Cookie-attribútumok: a nagy kép
A cookie-hoz tartozó attribútumok első ránézésre apró technikai részleteknek tűnhetnek. Valójában azonban a webes biztonság egyik legfontosabb védelmi vonalát jelentik.
Ezek határozzák meg:
- milyen környezetben érhető el a cookie;
- mikor kerül elküldésre;
- milyen csatornán használható.
Bár megfelelő beállításokkal teljes támadási osztályok tehetők jelentősen nehezebbé, a gyakorlat mégis azt mutatja, hogy ezek az attribútumok gyakran kimaradnak, vagy nem biztonságos alapértelmezett értéken maradnak. Ennek oka többnyire nem rosszindulat, hanem prioritási kérdés: a funkcionalitás megelőzi a biztonsági konfigurációt.
Pedig a HttpOnly, a Secure és a SameSite attribútum helyes használata nem extra védelem, hanem az alapvető kiberhigiénia része.
A HttpOnly az XSS elleni védelem egyik alapköve
A HttpOnly attribútum célja egyszerű: megakadályozza, hogy a cookie a JavaScriptből elérhető legyen. Ha egy cookie HttpOnly flaggel rendelkezik, a böngésző garantálja, hogy az nem olvasható, nem módosítható és nem továbbítható kliensoldali szkriptekből. Kizárólag HTTP-kérések során kerül elküldésre.
Ennek jelentősége különösen XSS (cross-site scripting) támadások esetén válik nyilvánvalóvá. Egy sikeres XSS-támadás során ugyanis a támadó tetszőleges JavaScript-kódot futtathat a felhasználó böngészőjében. Márpedig ha a session-azonosító cookie JavaScriptből elérhető, annak eltulajdonítása triviális.
A HttpOnly önmagában nem akadályozza meg magát az XSS-sebezhetőséget. Ugyanakkor az XSS elleni védelem szempontjából kulcsfontosságú, mert megakadályozza a cookie közvetlen kiolvasását és továbbítását.
A HttpOnly bináris jellegű: vagy be van állítva, vagy nincs. Nincs alternatív értéke, és nincs olyan legitim felhasználási eset, ahol egy autentikációhoz használt cookie-nál indokolt lenne a hiánya. Éppen ezért minden olyan cookie esetén, amely hitelesítést, sessiont vagy más biztonsági kontextust hordoz, a HttpOnly beállítása erősen ajánlott, gyakorlatilag alapkövetelménynek tekinthető.
A Secure és a transport layer kockázatok kezelése
A Secure attribútum azt szabályozza, hogy a cookie kizárólag titkosított, HTTPS-kapcsolaton keresztül kerülhet-e elküldésre. Ha egy cookie nem rendelkezik Secure flaggel, a böngésző titkosítatlan HTTP-kérés során is elküldi azt. Ez lehetőséget ad a hálózati lehallgatásra és a session cookie eltulajdonítására.
Különösen kritikus ez:
- nyilvános Wi-Fi hálózatokon;
- nem megfelelően konfigurált aldomaineken;
- örökölt rendszereknél.
Egyetlen titkosítatlan kérés is elegendő lehet egy munkamenet kompromittálásához. A Secure attribútum jelenléte vagy hiánya számít és nincs köztes állapot. Modern környezetben, ahol a HTTPS alapkövetelmény, a Secure flag elhagyása csendben nyitva hagy egy komoly biztonsági rést.
SameSite – a CSRF védelem alapmechanizmusa
A SameSite attribútum szabályozza, hogy a böngésző milyen körülmények között küldi el a cookie-t más oldalak által kezdeményezett kérések során. Ez közvetlenül a CSRF védelem egyik kulcseleme.
A SameSite három értéket vehet fel:
- Strict, mely esetén a cookie-kat a rendszer kizárólag azonos eredetű kérésnél küldi el;
- Lax , mely bizonyos navigációs esetekben elküldi a cookie-kat, de a tipikus CSRF-mintákat blokkolja;
- None, mely minden esetben elküldi a cookie-kat (Secure kötelező).
A modern böngészők alapértelmezése a Lax irányába tolódik, ami jól mutatja, hogy a CSRF-védelem ma már nem opcionális, hanem kötelezően ajánlott tényező.
A SameSite helyes konfigurációja jelentősen csökkenti annak esélyét, hogy a felhasználó böngészője egy külső, rosszindulatú oldal kérésére automatikusan hitelesített műveletet hajtson végre.
Cookie-biztonság okosan
A cookie a modern web működésének alapvető eleme. Természetéből fakadóan azonban kiemelt biztonsági kockázatot is jelent. Mivel kliensoldalon tárolódik és automatikusan továbbításra kerül, minden hibás konfiguráció közvetlen támadási felületet nyit.
A HttpOnly, Secure és SameSite attribútumok jól példázzák, hogy viszonylag egyszerű beállításokkal jelentős védelmi szint érhető el.
- A HttpOnly erősíti az XSS elleni védelmet.
- A Secure csökkenti a session-eltérítés kockázatát.
- A SameSite pedig a CSRF védelem egyik alapköve.
Ezek alkalmazása ugyan nem váltja ki a sebezhetőségek javítását, vagy a helyes alkalmazáslogikát, de érdemben csökkentik a támadások gyakorlati kihasználhatóságát.
Egy webalkalmazás biztonsági érettsége gyakran az ilyen „apró” konfigurációs döntéseken mérhető le. Nem szabad elfelejtenünk, hogy a cookie-attribútumok helyes alkalmazása nem extra védelem, hanem az a minimum, amelynek hiánya ma már szakmailag nehezen védhető.

