Süti: HttpOnly
A teszt azt nézi, kapnak-e HttpOnly jelzőt a munkamenet-jellegű sütik; nélküle az oldalon futó bármelyik szkript elolvashatja őket.
A HttpOnly jelzővel ellátott sütit a böngésző nem engedi olvasni JavaScriptből (például a document.cookie útján), csak a szervernek küldi el a kérésekkel. Ha a munkamenet-süti nem HttpOnly, egy XSS-hiba esetén a támadó szkriptje kiolvashatja, és a látogató munkamenetét átveheti. Az MDN azt is megjegyzi, hogy a HttpOnly süti a JavaScripttel indított kérésekkel továbbra is elmegy a szerverre: a jelző az olvasást tiltja, a küldést nem.
Hogyan mérjük
Szekció neve “Hogyan mérjük”A riport letölti a kezdőoldalt (legfeljebb 5 átirányítást követ), és a végső válasz Set-Cookie fejléceit nézi meg. Itt nem minden sütit vizsgál, csak a munkamenet-jellegű nevűeket. Egy süti akkor számít munkamenet-jellegűnek, ha a neve (kis- és nagybetűre való tekintet nélkül):
- tartalmazza ezek valamelyikét:
sess,token,auth,login; - pontosan
sid, vagy_sid-re végződik; PHPSESSID;wordpress_logged_in-nel vagywp_woocommerce_session-nel kezdődik.
| Eredmény | Mikor |
|---|---|
| Megfelelő | minden munkamenet-jellegű süti kapott HttpOnly jelzőt, vagy nincs ilyen süti |
| Hiba | legalább egy munkamenet-jellegű süti HttpOnly nélkül érkezik (a riport a darabszámot és legfeljebb 10 nevet mutatja) |
| Nem értékelhető | az oldal egyáltalán nem küld sütit |
Más nevű sütit (például analitikai vagy beállítássüti) nem vizsgál. Csak a kezdőoldal fejléceit látja, a JavaScripttel létrehozott sütiket nem (ezeken a HttpOnly eleve nem is állítható be).
Hogyan javítsd
Szekció neve “Hogyan javítsd”A jelzőt az a kód állítja be, amelyik a sütit kiadja. A riport kódrészlete csak a PHP munkamenet-sütijére (PHPSESSID) szól; a többit annál kell beállítani, ami küldi (bővítmény, webáruház, alkalmazás).
PHP (php.ini)
Szekció neve “PHP (php.ini)”Ha a PHPSESSID a hibás süti:
session.cookie_httponly = 1A php.net szerint ez a beállítás megjelöli a munkamenet-sütit úgy, hogy csak a HTTP-protokollon át érhető el, szkriptnyelvből (például JavaScriptből) nem. Alapértéke kikapcsolt. Kérheted a tárhelytől is.
PHP-kód
Szekció neve “PHP-kód”Saját kódban a setcookie() tömbös alakja (PHP 7.3-tól):
setcookie( 'nev', 'ertek', [ 'secure' => true, 'httponly' => true, 'samesite' => 'Lax' ] );nginx (ha proxy mögött küldi a süti)
Szekció neve “nginx (ha proxy mögött küldi a süti)”Az nginx proxy_cookie_flags direktívája (1.19.3-tól) a továbbított sütikre kapcsol jelzőt:
proxy_cookie_flags ~ httponly;Bővítmény vagy alkalmazás
Szekció neve “Bővítmény vagy alkalmazás”Ha a sütit egy bővítmény vagy webáruház adja, annak beállításában (vagy a fejlesztőjénél) keresd a HttpOnly jelzőt. Ha egy süti szándékosan JavaScriptből is olvasható kell legyen, az nem lehet munkamenet-süti, és a neve se utaljon erre.
Hogyan ellenőrizd
Szekció neve “Hogyan ellenőrizd”Futtasd újra a riportot, vagy nézd meg parancssorban:
curl -sI "https://pelda.hu/?v=1" | grep -i '^set-cookie:'A munkamenet-jellegű sütik sorában legyen ott a HttpOnly.
Készült: