Nastavení HTTP security headers v Apache2

Security Headers (česky bezpečnostní hlavičky) nastavují bezpečnostní pravidla mezi klientským prohlížečem a webovým serverem.

Některé hlavičky slouží k ochraně návštěvníka např. před phishingem – podvodnému získávání přihlašovacích údajů, některé zas zvýší bezpečnost vašeho serveru.

Zde je příklad bezpečnostních hlaviček, které mám nastavené u většiny webů.

Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options SAMEORIGIN
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set X-Download-Options: noopen
Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header set Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self';"

S takto nastavenými HTTP headers bez problému funguje i WordPress. Pokud nastavíte hodnotu X-Frame-Options na DENY a hodnotu frame-ancestors na none, nebudou se správně zobrazovat podrobnosti pluginů a detaily při aktualizacích.

Přehled hlaviček

Feature-Policy dovolí webu kontrolovat jaké API může prohlížeč používat.

X-XSS-Protection ochrání proti cross-site scriptingu.

X-Content-Type-Options vynutí kontrolu MIME.

X-Frame-Options zakáže vkládání vašeho webu do cizích.

Referrer-Policy upravuje informace při odkazování na jiné weby.

Strict-Transport-Security si vynutí načítání pouze přes bezpečný HTTPS protokol.

Content-Security-Policy mino jiné definuje, které zdroje se mohou načítat z jiných serverů.

Detailní informace a význam security headers doporučuji prostudovat na přehledně a česky psaném webu SecurityHeaders.cz.

Přednáška o HTTP hlavičkách

Ověřujte

Správné nastavení security headers u svého webu si můžete otestovat online službou.

Security Headers test