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; preloadX-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: nosniffX-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=()