X-Frame-Options

HTTP hlavička X-Frame-Options umožňuje sdělit, zda může být stránka vložena do rámu. A to především kvůli obraně proti tzv. clickjackingu, kdy útočník zobrazí stránku v rámu a na ni umístí další neviditelnou vrstvu. Uživatel pak klikne na libovolné místo v rámu, ale doopravdy klikl na neviditelnou vrstvu, která provede jinou akci. Tuto hlavičku navrhl jako první Microsoft v prohlížeči IE8 a později jej implementovali i další prohlížeče.

Jestliže hlavičku server neodešle, stránka může být vložena do rámu bez omezení. Hlavička X-Frame-Options může nabývat následujících hodnot:

  1. DENY – stránka nemůže být vložena do rámu ani na původním webu
  2. SAMEORIGIN – stránka může být vložena do rámu na původním webu, ale na jiném nikoliv
  3. Allow-From: http://www.example.com – stránka může být vložena do rámu na webu www.example.com, ale na jiném nikoliv

Podpora této hlavičky v prohlížečích je dnes velká, jak ukazuje tabulka:

Prohlížeč Od verze
Internet Explorer 8.0
Firefox (Gecko) 3.6.9 (1.9.2.9)
Opera 10.50
Safari 4.0
Chrome 4.1.249.1042

O této hlavičce jsem se dozvěděl kvůli použití frameworku Nette. Od verze 2.0.2 posílá Nette hodnotu SAMEORIGIN, takže stránka nemůže být vložena do rámu. Změna této hlavičky ve frameworku je jednoduchá, stačí změnit její hodnotu v configu:

common:
        nette:
                security:
                        frames:

V čistém PHP odešleme hlavičku pomocí funkce header:

header('X-Frame-Options: SAMEORIGIN');

Nebo v konfiguraci serveru Apache:

Header set X-Frame-Options SAMEORIGIN