X-Frame-Options

X-Frame-Options

Hlavička zakazuje vkládání webu či jeho části do jiných webů.

Hlavička X-Frame-Options říká, zda lze webovou stránku či její část zobrazit v rámu při použití HTML značek <frame>, <iframe> nebo <object>. Nastavení hlavičky umožňuje kompletní zakázání vkládání nebo omezení na konkrétní domény.

Proč používat X-Frame-Options

Hlavička ochraňuje uživatele od zneužití pomocí tzv. „clickjackingu“, kdy útočník na podvodné stránce vloží cizí stránku a nad ní umístí průhlednou vrstvu s vlastními událostmi a odkazy o kterých návštěvník netuší.

Použití X-Frame-Options preventivně brání zneužití vlastního obsahu na cizích www stránkách. Například nechceme stránky zobrazovat na jiných webech v rámu, kde bude nevhodný obsah, reklama atd.

Definice hlavičky X-Frame-Options

Zakázání jakéhokoliv vkládání
X-Frame-Options: DENY
Omezení na použití v rámu v rámci domény
X-Frame-Options: SAMEORIGIN
Kompletní zamezení, kromě zvolené domény
X-Frame-Options: ALLOW-FROM https://domenayxz.cz

Místo allow-from je již doporučováno používat nové řešení pomocí hlavičky Content-Security-Policy s direktivitou frame-ancestors. Výhodou je, že umožňuje povolit více domén.

Content-Security-Policy: frame-ancestors https://domenayxz.cz

Nastavení X-Frame-Options

.htaccess
# X-Frame-Options settings
Header set X-Frame-Options DENY
Povolení frame na vlastní doméně
Header set X-Frame-Options SAMEORIGIN
Nginx
add_header X-Frame-Options SAMEORIGIN;
Apache
header always set x-frame-options "SAMEORIGIN"
IIS
<add name="X-Frame-Options" value="SAMEORIGIN" />

Potenciální chyby v nastavení

ALLOW FROM http://domenayxz.cz ALLOW-FROM musí obsahovat pomlčku.
ALLOW-FROM domenayxz.cz ALLOW-FROM musí obsahovat celé URI včetně https://.
Nepoužívejte SAMEORIGIN, pokud máte nějakou stránku v doméně, která akceptuje libovolnou adresu URL s rámy.

Užitečné zdroje

HTML <iframe> Tag

Ukázka tagu iframe v HTML kódu.

<iframe src="https://www.securityheaders.cz">
    <p>Váš prohlížeč nepodporuje rámce.</p>
</iframe>

Definice a použití tagu iframe.