Bezpečnostní hlavičky posílá server spolu s každou stránkou a říkají prohlížeči, co smí a co ne. Na pozice vliv nemají. Řeší se proto, že chrání návštěvníky a že je po vás bude chtít každý, kdo dělá bezpečnostní audit.
Které nastavit
| Hlavička | Co dělá | Riziko zapnutí |
|---|---|---|
Strict-Transport-Security |
Vynutí HTTPS na úrovni prohlížeče | střední, viz níž |
X-Content-Type-Options: nosniff |
Zakáže prohlížeči hádat typ souboru | žádné |
Referrer-Policy |
Omezí, co se posílá cizím webům při odchodu | žádné |
X-Frame-Options: SAMEORIGIN |
Zakáže vložení webu do cizího rámce | žádné, pokud web nikam nevkládáte |
Permissions-Policy |
Vypne přístup ke kameře, mikrofonu, poloze | malé |
Content-Security-Policy |
Určí, odkud se smí načítat skripty a styly | vysoké, nasazuje se postupně |
Doporučené hodnoty
- Referrer-Policy. Hodnota
strict-origin-when-cross-originje dobrý kompromis: cizí web se dozví jen doménu, vlastní měření zůstane funkční. - X-Frame-Options. Hodnota
SAMEORIGIN. Když web nikam nevkládáte, můžete použítDENY. - Permissions-Policy. Vypněte, co nepoužíváte: kameru, mikrofon, polohu, platby.
- Strict-Transport-Security. Začněte s
max-age=300, po týdnu bez problémů zvyšte na rok a doplňteincludeSubDomains.
Content-Security-Policy krok za krokem
Tahle hlavička je jediná, která dokáže web rozbít. Vypíše se v ní, odkud se smí načítat skripty, styly, obrázky a písma. Cokoliv neuvedeného prohlížeč zablokuje. Typický web má zdroje z osmi domén, o kterých nikdo neví.
- Zapněte ji v režimu hlášení pomocí hlavičky
Content-Security-Policy-Report-Only. Nic se nezablokuje, jen se hlásí, co by se zablokovalo. - Sbírejte hlášení týden. Musí projít i málo navštěvované stránky, formuláře a pokladna.
- Projděte seznam domén. Co je legitimní, doplňte. U čeho nevíte, k čemu to je, zjistěte, kdo to tam přidal.
- Přepněte na ostrou hlavičku a hlášení sledujte dál.
Nejčastější komplikace je vložený JavaScript přímo v HTML, který se nedá povolit doménou. Řeší se jednorázovým klíčem nebo přesunem kódu do souboru.
Kde se hlavičky nastavují
| Prostředí | Kde |
|---|---|
| Apache | Soubor .htaccess nebo konfigurace virtuálního hostitele, direktiva Header set |
| Nginx | Konfigurace serveru, direktiva add_header |
| WordPress bez přístupu k serveru | Filtr wp_headers v souboru funkcí šablony |
| CDN nebo proxy | Pravidla v rozhraní poskytovatele |
Pozor na dvojí nastavení. Když hlavičku pošle server i aplikace, prohlížeč dostane dvě a chování se liší podle konkrétní hlavičky. Nastavujte je na jednom místě.
Jak si to ověřit
- V nástrojích pro vývojáře na kartě Network klikněte na první požadavek a podívejte se na Response Headers.
- Z příkazové řádky
curl -I https://vasedomena.cz/. - Ověřte i podstránku a soubor, ne jen úvodní stránku. Hlavičky se často nastaví jen pro kořen.
Časté dotazy
Ovlivňují bezpečnostní hlavičky pozice ve vyhledávání?
Ne, žádná z nich není faktor hodnocení. Řeší se ze dvou jiných důvodů: chrání návštěvníky před vloženým obsahem a jsou položkou v každém bezpečnostním auditu, který po vás bude chtít větší klient nebo pojišťovna. Nepřímý vliv má jen HSTS, protože ušetří jedno přesměrování při každé návštěvě.
Může zapnutí hlaviček rozbít web?
Čtyři z nich prakticky ne: X-Content-Type-Options, Referrer-Policy, X-Frame-Options a Permissions-Policy. Riziková je Content-Security-Policy, protože zakáže vše, co v ní není povolené, a typický web má skripty z osmi domén. Zavádí se v režimu jen hlásit, ne blokovat, a teprve po vyčištění hlášení se zapne naostro.
Co je HSTS a proč se s ním má zacházet opatrně?
Hlavička říká prohlížeči, aby po zadanou dobu chodil na doménu výhradně přes HTTPS. Prohlížeč si to zapamatuje a nedá se to zrušit ze strany serveru dřív, než doba vyprší. Když vám tedy vyprší certifikát nebo potřebujete dočasně HTTP, web bude nedostupný. Proto se začíná s krátkou dobou platnosti a prodlužuje se, teprve když je HTTPS spolehlivé.
Kontroly, které tenhle návod řeší
Když je v reportu některá z nich červená nebo okrová, patří sem. Váha je počet bodů, o které se při chybě přijde.
| Kontrola | Proč na ní záleží | Váha |
|---|---|---|
| Hlavička HSTS | HSTS řekne prohlížeči, ať na web chodí vždy zabezpečeně. Ušetří jedno přesměrování a zavře cestu k odposlechu. | 4 |
| Hlavička proti hádání typu souboru | Bez hlavičky X-Content-Type-Options může prohlížeč soubor vyhodnotit jinak, než server zamýšlel. | 3 |
| Ochrana proti vložení do rámu | Bez ochrany může cizí web vložit vaši stránku do rámu a podvrhnout kliknutí návštěvníka. | 3 |
| Pravidlo pro odesílání odkazujícího webu | Bez pravidla posílá prohlížeč cizím webům plnou adresu, ze které návštěvník přišel, včetně parametrů. | 2 |
| Server neprozrazuje verze softwaru | Hlavička s přesnou verzí PHP nebo serveru je pro útočníka seznam známých děr, které má zkusit. | 4 |