TOP 5 hlaviček na web

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. Cross Site Scripting Protection

Detailní informace naleznete na stránce X-XSS-Protection (X-XSS).

Jak název napovídá, hlavička X-XSS chrání proti CSS útokům. XSS filtr je ve výchozím nastavení povolen v prohlížečích Chrome, IE a Safari, je však vhodné tuto hlavičku vždy posílat neboť si jej uživatel může vypnout či by mu mohl být vypnut. Pokud prohlížeč detekuje XSS útok, neumožní načtení stránky.

Ukázka kódu pro soubor .htaccess

Prohlížeč bude mít na webu zapnut zabudovaný filtr proti XSS.

# X-XSS-Protection settings
Header set X-XSS-Protection "1; mode=block"

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

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

5. 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;"

CSP pomůže (vy)řešit i tzv. Mixed Content obsah pomocí příkazu 'upgrade-insecure-requests'. Prohlížeč bude jakékoliv zdroje s adresou http načítat pouze přes zabezpečené HTTPS. Nastavení není funkční v prohlížeři IE.

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