5.2 Bezpečnostní hlavičky (Security headers)

HTTP hlavičky odpovědi (response headers) mohou prohlížeči předávat instrukce, jak se má chovat a jaká bezpečnostní omezení aplikovat. Ačkoliv je u většiny z nich možné je vložit do HTML pomocí <meta> tagů, nedoporučuje se to.

Strict-Transport-Security (HSTS)

HSTS
Tato hlavička říká prohlížeči, že daná doména (případně i její subdomény) by měla být dostupná pouze přes zabezpečené spojení HTTPS.
HSTS Syntax
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains; preload

X-Frame-Options

X-Frame-Options
Informuje prohlížeč, zda smí vykreslovat danou stránku uvnitř tagů <frame>, <iframe>, <embed> nebo <object>. Slouží k obraně proti útokům typu Clickjacking.
Syntaxe X-Frame-Options
X-Frame-Options: DENY (zakáže vložení na cizí i vlastní doménu)

Namísto této hlavičky lze dnes efektivněji použít i novější Content-Security-Policy (CSP).

X-Content-Type-Options

X-Content-Type-Options
Indikuje, že MIME typ uvedený v hlavičce Content-Type se nesmí měnit a má být plně respektován (nosniff). Zabraňuje prohlížeči, aby sám odhadoval typ obsahu (MIME sniffing) – díky tomu útočník nedonutí prohlížeč vyhodnotit např. text/plain soubor s HTML značkami jako reálné HTML.
Syntaxe
X-Content-Type-Options: nosniff

X-XSS-Protection

Zastavuje načítání stránky, pokud prohlížeč detekuje reflected XSS. Dnes se již nedoporučuje používat. Prevenci XSS lze mnohem spolehlivěji zajistit pomocí Content-Security-Policy. (Podpora této hlavičky navíc byla například z prohlížeče Chrome 78 zcela odstraněna).

Content-Security-Policy (CSP)

Content-Security-Policy
Definuje, jaké prostředky smí prohlížeč na dané stránce načítat a z jakých zdrojů. Je to velmi robustní obrana proti XSS a dalším formám injekcí.
Běžné direktivy v CSP
  • script-src: odkud lze stahovat a spouštět JavaScript. Lze zabránit provádění in-line skriptů odebráním (nevyužitím) pravidel 'unsafe-inline' a 'unsafe-eval'. Pro bezpečné vkládání konkrétních inline skriptů se využívá např. nonce-{RANDOM_NONCE}.
  • style-src: odkud mohou pocházet CSS styly.
  • connect-src: se kterými servery může aplikace komunikovat (např. fetch, XMLHttpRequest).
  • img-src: povolené zdroje obrázků. Odebrání data: blokuje injekce datových URI.
  • object-src 'none': zablokování nebezpečných zastaralých pluginů, např. Flash a Silverlight.
  • frame-ancestors 'none': modernější náhrada X-Frame-Options – brání zobrazení stránky v cizích iframe (Clickjacking).

Permissions-Policy

Permissions-Policy
Tato hlavička deklaruje, jaké konkrétní funkcionality a aplikační rozhraní (API) prohlížeče mohou být na webu využívány. Mezi tyto schopnosti typicky patří geolokace, mikrofon, kamera či bluetooth.
Syntaxe
Permissions-Policy: geolocation=(), microphone=()