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-origin je 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žít DENY.
  • 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ňte includeSubDomains.

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í.

  1. 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.
  2. Sbírejte hlášení týden. Musí projít i málo navštěvované stránky, formuláře a pokladna.
  3. 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.
  4. 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

  1. V nástrojích pro vývojáře na kartě Network klikněte na první požadavek a podívejte se na Response Headers.
  2. Z příkazové řádky curl -I https://vasedomena.cz/.
  3. 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é.

Jakub Knytl

Patnáct let opravuji weby českým firmám a e-shopům. Většina problémů, o kterých tu píšu, mě potkala u klienta dřív, než jsem o nich napsal.

Související návody

Technika a zabezpečení

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ů.

· 13 min čtení

Pojmy z tohoto textu

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.

156 kontrol, výsledek do minuty. Bez registrace, bez karty, bez e-mailu.