Bezpečnostní HTTP hlavičky, které by měl posílat každý firemní web
Bezpečnostní HTTP hlavičky jsou pokyny, které váš webový server posílá s každou stránkou. Říkají prohlížeči, jak má s vaším webem zacházet: vždy používat HTTPS, nedovolit jiným webům vložit vaše stránky do rámce, nehádat typ souborů a načítat skripty jen z míst, kterým důvěřujete. Výkon webu nijak nezatěžují a nastavují se jednou v konfiguraci serveru nebo CDN.
Pro většinu firemních webů stručně: posílejte Strict-Transport-Security, Content-Security-Policy (alespoň s frame-ancestors), X-Content-Type-Options, Referrer-Policy a Permissions-Policy, nastavte cookies se správnými příznaky a odstraňte hlavičky, které prozrazují verze vašeho softwaru. Doporučené hodnoty níže vycházejí z OWASP HTTP Headers Cheat Sheet a MDN.
Chybějící hlavičky samy o sobě jen zřídka znamenají akutní problém. Prozrazují ale, jak pečlivě je web nastavený, a jejich doplnění uzavírá celé skupiny útoků na straně prohlížeče.
Jak své hlavičky zkontrolovat
Vyžádejte si od serveru hlavičky vaší úvodní stránky:
curl -sI https://yourcompany.com/
Zkontrolujte každý název hostitele, nejen ten hlavní: e-shop, přihlášení, zákaznický portál i staré testovací servery, které stále odpovídají. Hlavičky nastavené v aplikaci často chybí na chybových stránkách, u přesměrování a statických souborů, proto otestujte několik různých URL.
Hlavičky, které se vyplatí posílat
Strict-Transport-Security (HSTS)
Říká prohlížeči, aby pro vaši doménu po stanovenou dobu používal výhradně HTTPS, takže návštěvníka nelze nepozorovaně stáhnout zpět na HTTP.
Strict-Transport-Security: max-age=63072000; includeSubDomains
max-age se uvádí v sekundách. includeSubDomains přidejte, jen když všechny subdomény fungují přes HTTPS. Pro zařazení do preload seznamů prohlížečů vyžaduje hstspreload.org max-age alespoň 31536000 (1 rok), includeSubDomains a preload. Zařazení do preloadu se ruší obtížně, proto ho přidejte až nakonec.
Content-Security-Policy (CSP)
Určuje zdroje, ze kterých smí stránka načítat skripty, styly, obrázky a rámce. Dobře nastavená politika je nejsilnější obranou proti cross-site scriptingu na straně prohlížeče, musí ale přesně sedět na váš web. Začněte v režimu, který jen hlásí, pomocí Content-Security-Policy-Report-Only, sledujte, co by se zablokovalo, a teprve potom ji začněte vynucovat.
I bez úplné politiky je jedna direktiva jednoduchá a užitečná:
Content-Security-Policy: frame-ancestors 'self'
frame-ancestors určuje, které weby smí vaše stránky vkládat, a tím blokuje clickjacking. Musí se posílat jako hlavička, v tagu <meta> nefunguje.
X-Frame-Options
Starší způsob, jak zablokovat vkládání do rámců. OWASP doporučuje tam, kde to jde, používat frame-ancestors a X-Frame-Options: DENY (nebo SAMEORIGIN) jen jako zálohu pro starší prohlížeče.
X-Content-Type-Options
X-Content-Type-Options: nosniff
Zabrání prohlížeči hádat typ souboru, takže nahraný soubor nelze spustit jako skript. Ověřte, že hlavičky Content-Type jsou na celém webu správné.
Referrer-Policy
Referrer-Policy: strict-origin-when-cross-origin
Omezuje, jakou část vašich URL prohlížeč předá jiným webům, když návštěvník klikne na odkaz. Důležité je to všude, kde URL obsahují čísla objednávek, tokeny nebo hledané výrazy.
Permissions-Policy
Permissions-Policy: geolocation=(), camera=(), microphone=()
Vypne funkce prohlížeče, které váš web nepoužívá, takže si je podstrčený skript nemůže vyžádat.
Příznaky potřebují i cookies
Session cookies by měly mít nastavené Secure (jen přes HTTPS), HttpOnly (nečitelné z JavaScriptu) a SameSite=Lax nebo Strict:
Set-Cookie: session=...; Secure; HttpOnly; SameSite=Lax; Path=/
Zkontrolujte také atribut Domain. Cookie s rozsahem .yourcompany.com může číst každá subdoména, což je podstatné ve chvíli, kdy by některou z nich někdo převzal přes visící DNS záznam.
Hlavičky, které je třeba odstranit nebo přestat používat
ServeraX-Powered-Bys čísly verzí, napříkladApache/2.4.41neboPHP/7.4.3. Komukoli přesně řeknou, jaký software a jakou verzi má hledat. OWASP doporučujeX-Powered-Byodstranit aServernastavit tak, aby nic neprozrazoval.X-XSS-Protection. MDN ji označuje jako zastaralou a nestandardní a upozorňuje, že může způsobit problémy i na jinak bezpečných webech. OWASP ji doporučuje nenastavovat, případně nastavitX-XSS-Protection: 0, a spolehnout se na CSP.Expect-CT. OWASP ji radí nepoužívat a ze stávajících konfigurací odstranit.
Kde je nastavit
Hlavičky nastavte na jednom místě, odkud pokryjí všechny odpovědi: na webovém serveru (nginx add_header ... always;, Apache Header always set), v CDN nebo v nastavení hlaviček hostingové platformy. Klíčové slovo always v nginx je důležité: bez něj se hlavičky přidávají jen k úspěšným odpovědím a přesměrováním, ne k chybovým stránkám.
Krátký kontrolní seznam
- Spusťte
curl -sIpro každý název hostitele, který vlastníte. - Přidejte HSTS,
X-Content-Type-Options,Referrer-Policy,Permissions-Policyaframe-ancestors. - Úplnou CSP nasaďte nejprve v režimu jen pro hlášení.
- Na session cookies nastavte
Secure,HttpOnlyaSameSite. - Odstraňte čísla verzí ze
ServeraX-Powered-Bya zrušteX-XSS-ProtectionaExpect-CT. - Vše znovu zkontrolujte po každé změně serveru, CDN nebo platformy.
Když už jste v konfiguraci serveru, ověřte také, že nezpřístupňuje soubory .env, .git nebo zálohy.
Kde pomůže Datahorses
Datahorses každý den sleduje vaše weby zvenčí a kontroluje to, co z nich dostávají prohlížeče i útočníci: chybějící bezpečnostní hlavičky, cookies bez Secure, HttpOnly nebo SameSite, servery prozrazující své verze a smíšený HTTP obsah na HTTPS stránkách. Do vašich systémů nevstupujeme a žádné přístupy nepotřebujeme. Ke každému zjištění dodáme přesnou změnu konfigurace pro vašeho vývojáře. Podívejte se na úplný seznam toho, co hlídáme, nebo si vyžádejte nabídku.
Další články
Požadavky Gmailu a Yahoo na odesílatele: co se změnilo v roce 2024 a co zkontrolovat
Od února 2024 chtějí Gmail a Yahoo po hromadných odesílatelích ověřenou a zarovnanou poštu a snadné odhlášení. Co pravidla říkají a jak zkontrolovat vlastní doménu.
Expirace SSL/TLS certifikátu: proč stále shazuje weby
Expirovaný certifikát zastaví návštěvníky varováním přes celou obrazovku a může rozbít API i poštu. Platnost se zkracuje, takže obnova musí fungovat pokaždé.
PHP2Shell: které verze PHP jsou opravené a jak ověřit tu svou
Projekt PHP 21. října 2026 opravil 2 kritické chyby. Přinášíme přehled verzí s opravou, návod, jak zjistit, co hlásí váš server, a otázky pro poskytovatele hostingu.