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

Mgr. Tomáš Matonoha

Zabývám se vývojem webových stránek s redakčním systémem WordPress. Programuji také webové stránky a eshopy na míru pomocí PHP a frameworku Nette. Zajímá mě responzivní design a moderní webové technologie: HTML5, CSS3, LESS, PHP, MySQL, jQuery a Twitter Bootstrap.

1 komentář u “X-Frame-Options

  1. Super informace, zaprvé jsem o existenci takové hlavičky neměl ani tušení, zadruhé jsem ani nezaregistroval, že ji nette používá.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>