Security Headers co musíte mít na webu
Přehled TOP 5 bezpečnostních hlaviček, které byste měli nasadit na svůj web.
Nasazením HTTP Security Headers (bezpečnostní hlavičky protokolu HTTP) na svůj web zajistíte, že při návštěvě stránek je prohlížeč informován, jak se má na stránkách chovat a jak má přistupovat ke stahovanému obsahu. Nasazením hlaviček chráníte nejen vaši webovou aplikaci před různými typy útoků, ale také návštěvníka, na kterého jsou útoky vedeny.
Nasazení Security Headers je vhodné provést i pro jednoduché statické stránky. Připravili jsme pro vás 5 bezpečnostních hlaviček, které doporučujeme nasadit na jakékoliv webové stránky.
1. HTTP Strict Transport Security (HSTS)
Detailní informace naleznete na stránce Strict Transport Security (HSTS).
Hlavička Strict-Transport-Security oznamuje prohlížeči, že má všechny požadavky na daný web přesměrovávat z HTTP na HTTPS. Jakmile poprvé prohlížeč navštíví webové stránky s nastavenou HSTS hlavičkou, bude je následně, vždy po definovanou dobu, navštěvovat pouze a jen přes zabezpečenou HTTPS komunikaci.
Zcela zásadním předpokladem pro použití HSTS hlavičky je mít k dispozici SSL certifikát. Parametr max-age=expire-time
v sekundách určuje po jak dlouhou dobu si bude prohlížeč pamatovat nastavení.
Je-li zajištěna funkční HTTPS komunikace s důvěryhodným SSL certifikátem (například Let's Encrypt nebo jakýkoliv komerční nejlevnější SSL certifikát), nasazením hlavičky HSTS vyloučíte možnost pripojení nezabezpečeným HTTP protokolem.
Ukázka kódu pro soubor .htaccess
Prohlížeč si po prvním příchodu na web zapamatuje, že má po dobu 1 roku přistupovat vždy pouze po HTTPS protokolu. A to i na všechny subdomény.
# HSTS settings Header set Strict-Transport-Security "max-age=31536000; includeSubdomains"
2. X-Frame-Options (XFO)
Detailní informace naleznete na stránce X-Frame-Options (XFO).
Hlavička X-Frame-Options brání vkládání webové stránky do HTML tagu <iframe> a zamezuje zneužití "clickjackingem". Zjednodušeně řečeno, nenechá vkládat váš web či části stránek do jiných stránek na cizích doménách.
Ukázka kódu pro soubor .htaccess
Nastavení DENY kompletně zakáže vkládání stránek na jiné weby.
# X-Frame-Options settings Header set X-Frame-Options DENY
3. X-Content-Type-Options
Detailní informace naleznete na stránce X-Content-Type-Options.
Hlavička X-Content-Type-Options zakazuje MIME sniffing. Sděluje prohlížeči, aby neignoroval MIME typ uvedený v hlavičce souborů a nečenichal v obsahu vykonatelné skripty.
Ukázka kódu pro soubor .htaccess
Existuje pouze jeden parametr "nosniff".
# X-Content-Type-Options settings Header set X-Content-Type-Options nosniff
4. Content Security Policy (CSP)
Detailní informace naleznete na stránce Content Security Policy (CSP).
Pomocí hlavičky Content Security Policy můžete nastavit, které zdroje (soubory) dovolíte prohlížeči načíst na webu. Jinými slovy, můžete whitelistovat zdroje pro váš web. Nasazení CSP výrazně zvyšuje ochranu proti XSS (Cross-site scripting) a dalším code injection útokům.
Upozorňujeme však na fakt, že nastavení CSP není triviální a vyžaduje znalosti o tom, jak fungují vaše stránky. Nevhodné nastavení může zablokovat scripty i obrázky načítané z různých scriptů, které vkládáte na web (GA a další měřící kódy, fonty atd.).
Ukázka kódu pro soubor .htaccess
Při nastavování hlavičky CSP buďte opatrní a kontrolujte, zda jste nezakázali vkládání potřebných souborů pro web. Příklad ukázky kódu povoluje nahrání css stylů pouze z vlastní domény a CDN CloudFlare (font-awesome.min.css/Bootstrap 4). Doporučujeme vždy nejdříve otestovat pomocí Content-Security-Policy-Report-Only
# CSP settings Header set Content-Security-Policy "style-src 'self' https://cdnjs.cloudflare.com;"
5. Upgrade-Insecure-Requests
Detailní informace naleznete na stránce Upgrade-Insecure-Requests.
Hlavička patří pod hlavičku Content Security Policy a říká prohlížeči, aby vše co se načítá, načítal přes zabezpečený protokol HTTPS. Tato hlavička je vhodná pro webové stránky s velkým počtem nezabezpečených starších adres URL, které je třeba přepsat. Vyhneme se tak problémům s Mixed content.
Ukázka kódu pro soubor .htaccess
Nastavení hlavičky pomůže (vy)řešit i tzv. Mixed Content obsah. Prohlížeč bude jakékoliv zdroje s adresou http načítat pouze přes zabezpečené HTTPS.
# CSP settings Header set Content-Security-Policy: "upgrade-insecure-requests;"
Co všechno by měl mít bezpečný web?
Splňuje váš web alespoň základní požadavky z hodnocení WebTop100?
Na adrese GitHub WebTop100 publikuje bezpečnostní odborník a hodnotitel webů Michal Špaček seznam informací a kritérií posouzení moderního webu.