Bezpečnostní hlavičky: které nastavit a v jakém pořadí
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é.
Související návody
HTTPS a certifikát: co hlídat, aby web nespadl kvůli vypršení
HTTPS je dnes samozřejmost a jeho absence je nález. Zajímavější je, co se stane při vypršení certifikátu a jak přechod udělat bez ztráty pozic.
Zabezpečení WordPressu: co udělat, aby web nebyl snadný cíl
Napadený web přijde o pozice dřív, než si toho někdo všimne. Většinu útoků zastaví aktualizace, silná hesla a úklid nepoužívaných pluginů.
Struktura URL adres, která vydrží roky
Krátká, malými písmeny, se spojovníky, bez diakritiky. Proč se adresa s háčky rozpadne na změť procent a co hrozí při přepnutí trvalých odkazů.
Pojmy z tohoto textu
- Bezpečnostní hlavička Údaj, který server posílá spolu se stránkou a kterým prohlížeči omezuje, co smí. Na pozice vliv nemá.
- HSTS Hlavička, kterou prohlížeči nařídíte chodit na doménu výhradně přes HTTPS. Prohlížeč si to zapamatuje na zadanou dobu.
- Smíšený obsah Stav, kdy se stránka načte přes HTTPS, ale některé její části se stahují přes nešifrované HTTP.
- JSON-LD Formát zápisu strukturovaných dat. Vkládá se jako samostatný blok a nemíchá se do značek obsahu.
- llms.txt Textový soubor v kořeni webu, který jazykovým modelům shrnuje, co na webu je a kde to najdou.
- Duplicitní obsah Tentýž nebo velmi podobný text na víc adresách. Není to postih, ale vyhledávač si vybere jednu verzi a ostatní potlačí.
Nevíte, jestli se vás to týká?
Pusťte kontrolu na svůj web a uvidíte, jestli tenhle problém máte. Trvá to necelou minutu.