Tovább a tartalomhoz

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.

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 (a max-age=0 is 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 a preload direktí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.

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).

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.

nginx
add_header Strict-Transport-Security "max-age=31536000" always;

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.

.htaccess
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000"
</IfModule>

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.

Cloudflare
Set static: Strict-Transport-Security = max-age=31536000

Ú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.

biztonsagi-fejlecek.php
<?php
add_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.

Futtasd újra a riportot. Parancssorból a fejlécet így nézheted meg:

Terminál
curl -sI https://example.com/ | grep -i strict-transport-security

A 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:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások