HSTS
A teszt azt nézi, hogy az oldal Strict-Transport-Security fejléce legalább hat hónapra kötelezi-e a böngészőt a https használatára; ha nem, add hozzá a fejlécet.
A HSTS (HTTP Strict Transport Security) egy válaszfejléc, amellyel az oldal azt kéri a böngészőtől, hogy a megadott ideig csak https-en érje el. Ha a látogató a http:// címet írja be, a böngésző még a kérés elküldése előtt átírja https://-re. Ez megvéd a kapcsolat lehallgatásától és a https-ről http-re terelő támadásoktól.
A HSTS az átirányítás kiegészítése, nem helyettesítője: az első látogatást nem védi, mert a böngészőnek előbb egyszer https-en meg kell kapnia a fejlécet (MDN). Az első kérés védelméhez az HTTPS-átirányítás kell. A riportban a teszt súlyossága közepes.
Hogyan mérjük
Szekció neve “Hogyan mérjük”A riport a vizsgált oldal főoldalának válaszfejlécét nézi (a kérés követi az átirányításokat, és a végső válasz fejléce számít). A Strict-Transport-Security fejlécből kiolvassa a max-age értékét.
- Megfelelő: van
max-age=<szám>, és a szám legalább 15 768 000 másodperc (182,5 nap, vagyis hat hónap). - Hiba: nincs a fejléc, nincs benne
max-age, vagy az érték kisebb 15 768 000-nél (amax-age=0is ide tartozik, az kikapcsolja a HSTS-t). Az érték idézőjelben is elfogadott.
A teszt kétállapotú, figyelmeztetés nincs. A küszöb a Mozilla ajánlott minimuma: legalább hat hónap (15 768 000), de a Mozilla két évet (63 072 000) javasol.
Amit a teszt nem néz:
- az
includeSubDomainsés apreloaddirektívát, - hogy a fejléc https-válaszban érkezett-e. Az RFC 6797 szerint a böngésző a http-n kapott HSTS-fejlécet figyelmen kívül hagyja, a riport viszont a fejléc jelenlétét akkor is megfelelőnek veszi, ha az oldal csak http-n érhető el,
- az aloldalakat és az aldomaineket, csak a főoldalt.
Hogyan javítsd
Szekció neve “Hogyan javítsd”A HSTS bekapcsolása előtt győződj meg róla, hogy az oldal és (ha használod az includeSubDomains direktívát) az összes aldomain tényleg működik https-en. A Mozilla útmutatója szerint a beállítás után a webhelynek a lejáratig https-en kell maradnia: a böngésző a max-age idejéig nem engedi a http-t. A kikapcsolás is csak https-en küldött max-age=0-val lehetséges, ezért nincs gyors visszalépés.
A riport kártyája max-age=31536000 értéket (egy év) javasol. Az alábbi kódok mindegyike a fejlécet egyedül állítja be; ha a riport több hiányzó fejlécet jelez, ugyanabba a blokkba kerülhet mindegyik (lásd: X-Content-Type-Options, Referrer-Policy, Cross-Origin-Opener-Policy).
nginx
Szekció neve “nginx”Az nginx server blokkjába. Az always paraméter miatt a fejléc hibakódú válaszokon is megjelenik. Ha egy location blokkban is van add_header, oda is be kell írni, mert az nginx dokumentációja szerint a fejlécek csak akkor öröklődnek az előző szintről, ha az adott szinten nincs add_header.
add_header Strict-Transport-Security "max-age=31536000" always;Apache (.htaccess)
Szekció neve “Apache (.htaccess)”A webroot .htaccess fájljába. A mod_headers modul kell hozzá; az <IfModule> miatt a hiányzó modul nem okoz 500-as hibát.
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=31536000"</IfModule>Cloudflare
Szekció neve “Cloudflare”Két út van.
A Cloudflare saját HSTS-beállítása: SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) → Enable HSTS. A beállításban a max-age 1 és 12 hónap között választható, külön kapcsolható az includeSubDomains és a preload. Ellenőrizd a kész fejlécet (lásd lent), hogy a választott időtartam eléri-e a riport 15 768 000 másodperces küszöbét. A 12 hónap biztosan eléri.
Vagy válaszfejléc-átalakító szabállyal: Rules → Overview → Create rule → Response Header Transform Rule.
Set static: Strict-Transport-Security = max-age=31536000WordPress
Szekció neve “WordPress”Új fájlba: wp-content/mu-plugins/biztonsagi-fejlecek.php (Bedrockon: web/app/mu-plugins/biztonsagi-fejlecek.php). A send_headers akció azután fut le, hogy a WordPress elküldte a saját fejléceit.
<?phpadd_action( 'send_headers', function () { header( 'Strict-Transport-Security: max-age=31536000' );} );Hosszabb időtartam, aldomainek, preload
Szekció neve “Hosszabb időtartam, aldomainek, preload”Ha az oldal stabilan működik https-en, a Mozilla két évet javasol (max-age=63072000). Az includeSubDomains az összes aldomainre kiterjeszti a szabályt, ezért azokat is https-re kell hozni előbb. A preload a MDN szerint legalább max-age=31536000 értéket és includeSubDomains direktívát kér, és belekerülés után a böngészők beépített listáján is szerepelni fogsz: ez gyakorlatilag visszavonhatatlan döntés, ezért csak tudatosan kapcsold be.
Hogyan ellenőrizd
Szekció neve “Hogyan ellenőrizd”Futtasd újra a riportot. Parancssorból a fejlécet így nézheted meg:
curl -sI https://example.com/ | grep -i strict-transport-securityA kimenetben a max-age értékének legalább 15768000-nek kell lennie. Az SSL Labs SSL Server Test is jelzi a HSTS állapotát.
Készült: