Kontrola bezpečnostních hlaviček
Které bezpečnostní hlavičky má web posílat a jak si je zkontrolovat?
Krátká odpověď
Bezpečnostní hlavičky jsou pokyny, které web přidá do odpovědi a kterými prohlížeči řekne, co na stránce nedovolit. Tegmia čte z odpovědi vašeho webu sedm z nich — Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, Referrer-Policy, ochranu proti vložení do rámu, Permissions-Policy a hlavičky prozrazující verzi serveru — a k tomu příznaky u cookies. Žádná z nich není oprava zranitelnosti; jsou to levná opatření, která zmenšují dopad chyby, která se stane později.
Patří do kontroly Hlavičky a konfigurace HTTPS.
Co to je
Content-Security-Policy je z té sedmičky jediná, která vyžaduje přípravu, a zároveň jediná, která zastaví vložený cizí skript. Zavádí se v režimu hlášení, pak se zapne vynucování.
Strict-Transport-Security zavírá mezeru v prvním spojení; má vlastní stránku, protože s ní jde nejvíc rozbít.
Zbytek je nastavení na jeden řádek: nosniff, Referrer-Policy, frame-ancestors nebo X-Frame-Options, Permissions-Policy a tišší hlavička Server.
U cookies nejde o hlavičku, ale o příznaky: Secure, HttpOnly a SameSite. Přihlašovací cookie bez nich je nejkratší cesta od chyby na webu ke krádeži přihlášení.
Jak to Tegmia měří
Co kontrola skutečně dělá, s prahy, na kterých hlásí nález.
- Pošleme nejvýš pět požadavků GET na úvodní stránku (každé přesměrování je jeden, nejvýš čtyři) a jeden navíc na http://. Tělo odpovědi zahazujeme, jakmile dorazí hlavičky — obsah webu nestahujeme.
- Každý skok přesměrování znovu přeložíme a ověříme, že míří na veřejnou adresu. Přesměrování nás nemůže zavést do vnitřní sítě.
- Hlásíme nepřítomnost: http.csp_missing, http.xcto_missing (nebo nečekanou hodnotu místo nosniff), http.referrer_policy_missing, http.permissions_policy_missing.
- Ochranu proti vložení do rámu uznáme dvěma způsoby — hlavičkou X-Frame-Options nebo direktivou frame-ancestors v CSP. Chybí-li obojí, hlásíme http.frame_protection_missing.
- Hlavičky Server a X-Powered-By hlásíme jen tehdy, když obsahují číslo verze (http.server_banner_verbose). Samotné jméno serveru za nález nepovažujeme.
- U každé cookie z odpovědi čteme příznaky a hlásíme chybějící Secure, HttpOnly a SameSite zvlášť, s názvem cookie v důkazu.
- Celá sada hlaviček, kterou jsme dostali, i řetěz přesměrování jsou součástí důkazu. Hlásíme se jako Tegmia-Checker a spojení nerecyklujeme.
- Když úvodní stránka odpoví chybou serveru (5xx), odmítnutím nebo omezením (401, 403, 407, 408, 425, 429), hlavičky nečteme: nepatří webu, ale tomu, kdo odpověděl. Běh skončí jako chyba měření a zjištění necháme, jak byla.
- Když je všechno v pořádku, zapíšeme http.headers_ok, aby bylo vidět, že kontrola proběhla a nic nenašla.
Co tím nezměříme
- Čteme úvodní stránku domény, ne celý web. Jiná sekce může mít hlavičky jinak.
- Obsah CSP nevyhodnocujeme — nerozlišíme politiku, která skutečně brání, od politiky, která je tam pro forma s „unsafe-inline“.
- Cookies vidíme jen ty, které web pošle nepřihlášenému návštěvníkovi na úvodní stránce.
Co z toho může vzejít za zjištění
Přímo z katalogu. Stejný text uvidíte i v hlášení.
Chybí Content-Security-Policy
Středníhttp.csp_missing · Hlavičky a konfigurace HTTPS
CSP je nejúčinnější obrana proti vloženému cizímu skriptu (XSS) a proti podvrženému obsahu z cizí domény. Bez ní se takový útok projeví v plné síle.
Co udělat: Zaveďte CSP postupně: nejdřív v režimu Content-Security-Policy-Report-Only, vyhodnoťte hlášení a pak přepněte na vynucování.
Výchozí závažnost střední: Naplánujte do měsíce. Samo o sobě nestačí k útoku, ale usnadňuje ho. Celé pravidlo v katalogu
Chybí ochrana proti vložení do cizího rámu
Nízkéhttp.frame_protection_missing · Hlavičky a konfigurace HTTPS
Cizí web může váš obsah zobrazit ve svém rámu a přelepit ho tak, aby uživatel klikl na něco jiného, než vidí (clickjacking).
Co udělat: Přidejte do CSP direktivu frame-ancestors self, případně hlavičku X-Frame-Options: SAMEORIGIN.
Výchozí závažnost nízké: Doladění. Bez bezprostředního rizika, zlepší to celkový stav. Celé pravidlo v katalogu
Chybí X-Content-Type-Options
Nízkéhttp.xcto_missing · Hlavičky a konfigurace HTTPS
Bez této hlavičky může prohlížeč odhadovat typ souboru a spustit jako skript něco, co jím být nemá.
Co udělat: Přidejte hlavičku X-Content-Type-Options: nosniff.
Výchozí závažnost nízké: Doladění. Bez bezprostředního rizika, zlepší to celkový stav. Celé pravidlo v katalogu
Chybí Referrer-Policy
Nízkéhttp.referrer_policy_missing · Hlavičky a konfigurace HTTPS
Prohlížeč může cizím webům posílat celou adresu, ze které uživatel odešel. V adresách bývají interní identifikátory i tokeny.
Co udělat: Přidejte Referrer-Policy: strict-origin-when-cross-origin.
Výchozí závažnost nízké: Doladění. Bez bezprostředního rizika, zlepší to celkový stav. Celé pravidlo v katalogu
Chybí Permissions-Policy
Informacehttp.permissions_policy_missing · Hlavičky a konfigurace HTTPS
Hlavička omezuje, které citlivé funkce prohlížeče (kamera, mikrofon, poloha) smí stránka a vložený cizí obsah používat.
Co udělat: Přidejte Permissions-Policy a vypněte funkce, které web nepotřebuje, například camera=(), microphone=(), geolocation=().
Výchozí závažnost informace: Jen zjištěný fakt o vašem prostředí. Není to chyba. Celé pravidlo v katalogu
Server zveřejňuje přesnou verzi software
Informacehttp.server_banner_verbose · Hlavičky a konfigurace HTTPS
Verze v hlavičce sama o sobě není zranitelnost, ale útočníkovi ušetří práci při hledání cíle. Skrýt ji je levné.
Co udělat: Omezte hlavičky Server a X-Powered-By na obecnou hodnotu, nebo je vypněte.
Výchozí závažnost informace: Jen zjištěný fakt o vašem prostředí. Není to chyba. Celé pravidlo v katalogu
Cookie bez příznaku Secure
Středníhttp.cookie_missing_secure · Hlavičky a konfigurace HTTPS
Takovou cookie prohlížeč pošle i po nezabezpečeném spojení. Pokud jde o přihlašovací cookie, dá se ukrást odposlechem.
Co udělat: Doplňte u všech cookies příznak Secure.
Výchozí závažnost střední: Naplánujte do měsíce. Samo o sobě nestačí k útoku, ale usnadňuje ho. Celé pravidlo v katalogu
Cookie bez příznaku HttpOnly
Středníhttp.cookie_missing_httponly · Hlavičky a konfigurace HTTPS
K takové cookie se dostane JavaScript na stránce. Při úspěšném XSS to znamená přímou krádež přihlášení.
Co udělat: Doplňte HttpOnly u cookies, které čtený JavaScript nepotřebuje (typicky přihlašovací).
Výchozí závažnost střední: Naplánujte do měsíce. Samo o sobě nestačí k útoku, ale usnadňuje ho. Celé pravidlo v katalogu
Cookie bez příznaku SameSite
Nízkéhttp.cookie_missing_samesite · Hlavičky a konfigurace HTTPS
Bez SameSite může cizí web vyvolat akci ve vašem jménu (CSRF).
Co udělat: Nastavte SameSite=Lax, u citlivých operací SameSite=Strict.
Výchozí závažnost nízké: Doladění. Bez bezprostředního rizika, zlepší to celkový stav. Celé pravidlo v katalogu
Typická chybná konfigurace
Hlavičky nastavené na jednom místě a chybějící na jiném. Web běží za reverzní proxy nebo CDN, hlavičky se přidávají v aplikaci — a statické soubory, chybové stránky nebo administrace jdou jinou cestou, kde nikdo nic nepřidává.
Druhá typická situace: CSP se nasadí hned v režimu vynucování a rozbije platební tlačítko, mapu nebo analytiku. Po hodině se vypne a pak už se k ní nikdo nevrátí. Proto se zavádí v režimu Report-Only.
Jak to opravit
Konkrétní kroky v pořadí, ve kterém mají smysl.
- 01Zjistěte, kde se hlavičky dají nastavit pro celý web — ve webovém serveru, v proxy, nebo v aplikaci. Rozhodněte se pro jedno místo.
- 02Přidejte levné hlavičky: X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin, X-Frame-Options: SAMEORIGIN a Permissions-Policy s vypnutými funkcemi, které web nepotřebuje.
- 03U cookies doplňte Secure a u všech, které JavaScript nečte, i HttpOnly. SameSite nastavte na Lax, u citlivých operací na Strict.
- 04Z hlaviček Server a X-Powered-By odeberte číslo verze, nebo je vypněte.
- 05Teprve pak CSP: nasaďte Content-Security-Policy-Report-Only, několik dní sbírejte hlášení a doplňte zdroje, které web legitimně používá.
- 06Pak CSP přepněte na vynucování a nechte si zkontrolovat, co server opravdu odpovídá — ne co má podle konfigurace odpovídat.
Jak to vypadá
Hodnoty tak, jak je zapíšete nebo uvidíte.
Typ souboru se nehádá
X-Content-Type-Options: nosniff
Odkud uživatel přišel
Referrer-Policy: strict-origin-when-cross-origin
Co web nepotřebuje, je vypnuté
Permissions-Policy: camera=(), microphone=(), geolocation=()
Zkontrolovat to na své doméně
Čteme jen to, co doména zveřejnila.
Sken přečte veřejné záznamy a konfiguraci domény a ukáže výsledek téhle kontroly u vás, včetně důkazu, ze kterého jsme vycházeli.
Situace, které to řeší
- Prohlížeč hlásí nedůvěryhodný certifikát
Čtyři různé příčiny varování o certifikátu, jak je od sebe odlišit a co která znamená pro návštěvníky webu.
Související kontroly
Co se k tomu váže a dělá se obvykle spolu.
- Kontrola HSTS
Co hlavička Strict-Transport-Security zavírá za mezeru, jakou hodnotu max-age čekáme a kdy HSTS nezapínat.
- Kontrola přesměrování z HTTP na HTTPS
Jak se měří, že web nezůstane na nezabezpečeném spojení, a proč bývá varianta s www zapomenutá.
- Kontrola SSL certifikátu
Co se dá o certifikátu zjistit jedním TLS spojením: vydavatel, doménová jména, síla klíče, verze protokolu.
Naposledy upraveno 3. listopadu 2026. Stránku píšeme ručně a opravujeme ji, když se změní to, co měříme. Našli jste tu chybu? Napište na kontakt.