Facebook
Twitter
Google+
Kommentare
0

X-Frame-Options Header gegen ClickJacking

ClickJacking hatte ich in einem älteren Beitrag bereits erwähnt, und es gibt bereits seit langem Gegenmaßnahmen. Der IE8 hat damals ein neues Feature eingeführt, welches mittlerweile von den anderen Browsern auch umgesetzt wurde, und dieses Feature stelle ich hier vor.

Wir als Webseitenbetreiber können damit unterbinden, dass unsere Seite in einem Frame (IFrame eingeschlossen) dargestellt werden. Dazu überprüft der Browser, ob auf der eingebundenen Seite der HTTP-Header X-Frame-Options existiert. Für diesen Header gibt es zwei mögliche Werte:

DENY: Diese Seite darf in keinem Frame dargestellt werden.

SAMEORIGIN: Diese Seite darf nur in einem Frame dargestellt werden wenn die beiden Domains übereinstimmen.

Auf dieser Testseite kann man das ganze nochmal genauer betrachten und sehen ob der eigene Browser die Frames unterdrückt (2 der 3 IFrames sollten keinen Inhalt anzeigen).

Wie kann man nun diesen Header senden? Da gibt es mehrere Möglichkeiten:

  • Im Apache eine Einstellung für den ganze Host (bzw. VHost):
    Header always append X-Frame-Options DENY
  • Im IIS: Internet Service Manager öffnen -> HTTP Headers Tab -> Custom Header hinzufügen:
    Custom Header Name: X-Frame-Options
    Custom Header Value: DENY
  • In PHP:
    <?php
    header("X-Frame-Options: DENY");
    ?>
  • Im Zend Framework als Controller Plugin:
    <?php
    
    class App_Controller_Plugins_XFrameOptionHeader extends Zend_Controller_Plugin_Abstract
    {
        public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
        {
            $this->_response->setHeader('X-FRAME-OPTIONS', 'DENY');
        }
    }

Sollte man einzelne Seiten doch in einem IFrame erlauben wollen muss man entsprechende Ausnahmen einbauen, damit der Header dann nicht gesetzt wird.

Über den Autor

PHP Gangsta

Der zweitgrößte deutsche, eher praxisorientierte PHP-Blog von Michael Kliewe veröffentlicht seit Mitte 2009 Artikel für Fortgeschrittene.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen