Bezpečnostní HTTP hlavičky
Ověřte si, zda má váš web správně nastavené bezpečnostní HTTP hlavičky.
Jak kontrola hlaviček funguje
Nástroj odešle běžný HTTPS GET požadavek na zadanou URL a přečte hlavičky odpovědi - tytéž hlavičky, které dostává každý prohlížeč. Z těla stránky se nic neparsuje; bezpečnostní hlavičky žijí výhradně v HTTP odpovědi.
Poté hledáme hlavičky řídící ochrany na straně prohlížeče: Strict-Transport-Security (HSTS), Content-Security-Policy (CSP), X-Frame-Options, X-Content-Type-Options a Referrer-Policy. Každá přítomná hlavička zvyšuje skóre a chybějící jsou vypsány s vysvětlením rizika, které nechávají otevřené.
Protože kontrola následuje přesměrování, výsledek odráží cílovou URL. Pokud váš web přesměrovává z HTTP na HTTPS nebo z holé domény na www, zobrazené hlavičky patří cíli.
Jak číst výsledky
Skóre je rychlá orientace, ne certifikace. Co je důležité v praxi:
- HSTS - říká prohlížečům, aby pro vaši doménu vždy používaly HTTPS. Běžnou praxí je max-age alespoň půl roku; includeSubDomains přidejte jen tehdy, když každá subdoména běží na HTTPS.
- CSP - nejsilnější obrana proti XSS, ale také nejtěžší na napsání. I základní politika omezující zdroje skriptů je velkým zlepšením oproti žádné.
- X-Content-Type-Options: nosniff a X-Frame-Options (nebo direktiva CSP frame-ancestors) - levné jednořádkové ochrany proti MIME sniffingu a clickjackingu.
Časté problémy
Hlavička je nastavena, ale hlásí se jako chybějící. Reverzní proxy nebo CDN před vaší aplikací může hlavičky odstraňovat nebo přepisovat. Porovnejte odpověď přes curl -I přímo proti originu a proti veřejné URL a zjistíte, která vrstva ji zahazuje.
CSP je přítomná, ale neúčinná. Content-Security-Policy-Report-Only pouze loguje porušení, nic neblokuje. Hodí se na testování, ale žádnou ochranu neposkytuje - jakmile je váš log hlášení čistý, přepněte na vynucující hlavičku.
Různé cesty vracejí různé hlavičky. Hlavičky nastavené v middleware aplikace se nemusejí vztahovat na statické soubory servírované přímo webovým serverem ani na chybové stránky. Otestujte i URL statického souboru a stránku 404.
Časté otázky
Které bezpečnostní hlavičky by měl mít každý web?
Rozumný základ: Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options: nosniff, Referrer-Policy a ochrana proti vložení do rámu přes X-Frame-Options nebo CSP frame-ancestors. API navíc prospěje Cache-Control: no-store u citlivých odpovědí.
Je hlavička X-XSS-Protection ještě potřeba?
Ne. Moderní prohlížeče XSS auditor, který řídila, odstranily a ve starých prohlížečích mohla hlavička dokonce zavést zranitelnosti. Místo ní použijte striktní Content-Security-Policy.
Chrání HSTS i úplně první návštěvu?
Sama o sobě ne - prohlížeč se pravidlo dozví až z první HTTPS odpovědi. Pro pokrytí první návštěvy zaregistrujte doménu do HSTS preload listu (hstspreload.org) a použijte direktivu preload spolu s includeSubDomains.
Může špatná hlavička rozbít můj web?
Ano, dva klasické případy: příliš striktní CSP zablokuje vaše vlastní skripty nebo inline styly a HSTS s includeSubDomains rozbije každou subdoménu, která stále běží na čistém HTTP. CSP nasazujte nejdřív v režimu report-only a HSTS začněte s krátkým max-age.
Sledujte změny hlaviček nepřetržitě
ePulz.io vás upozorní, když se hlavička změní (například po nasazení, které omylem odstranilo CSP).
Začít s ePulz.io →O tomto nástroji
Bezpečnostní hlavičky říkají prohlížeči, jak má chránit vaše návštěvníky. Tento audit ukáže, zda jsou HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options a Referrer-Policy skutečně přítomny, a výsledek ohodnotí, takže po nasazení odhalíte mezery typu clickjacking nebo MIME-sniffing.