X-Frame-Options

Mittels Verwendung des HTTP-Security-Headers X-Frame-Options können sogenannte Clickjacking-Angriffe verhindert werden. Hierfür wird dem Webbrowser mitgeteilt, inwieweit die aufgerufene Webseite in eine andere Webseite – z.B. via Frames – eingebettet werden kann.

In der Regel kann eine Webseite ohne Weiteres mit den HTML-Elementen <frame>; <iframe>; <object>; < embed> in eine andere Webseite integriert werden.

Der X-Frame-Options-Header (RFC) oder XFO-Header kann aber auch erheblich die Besucher deine Website vor Clickjacking-Angriffen schützen. Ein Angreifer kann einen Iframe auf seiner Site laden und deine Site als Quelle festlegen. Dies lässt ganz einfach realisieren:

# <iframe src="https://deinedomain.de"></iframe>

Mit etwas raffiniertem CSS können Hacker Ihre Website im Hintergrund verbergen und einige echt aussehende Overlays erstellen. Wenn Ihre Besucher auf einen ihrer Meinung nach harmlosen Link klicken, klicken sie im Hintergrund tatsächlich auf Links auf deiner Website.

Das mag im ersten Moment nicht so schlimm erscheinen, bis wir feststellen, dass der Browser diese Anfragen im Kontext des Benutzers ausführt, was bedeuten könnte, dass er sich bei Ihrer Site angemeldet und authentifiziert hat! In Wirklichkeit hat der Hacker deine Logindaten abgefischt.

X-Frame-Options: Beschreibung Funktionsweise

Um dem Webbrowser mitzuteilen, wie dieser sich verhalten soll, wenn die eigene Webseite in einer weiteren externen Website eingebunden werden soll, wird in der HTTP-Antwort der entsprechende HTTP-Header mitgesendet:

# HTTP/2 200 OK
# date: Sun, 02 Jan 2021 14:30:45 GMT
# content-type: text/html; charset=UTF-8
# content-length: 2884
# x-frame-options: deny

Im o.a. Beispiel wird die Einstellung <deny> gewählt. Dem Webbrowser wird die Einbettung der Webseite hiermit untersagt.

Header-Einstellungen im Detail

Der X-Frame-Options-Header unterstützt folgende drei Einstellungswerte:

SelectorFunktion
denyDiese Angabe führt dazu, dass die Webseite generell nicht eingebettet werden kann.
sameoriginIn diesem Fall kann die Webseite nur von anderen Webseiten der gleichen Quelle eingebettet werden.
allow-from uriDie Einbindung der Webseite ist nur von Webseiten aus der angegebenen Quelle gestattet.

X-Frame-Options Konfiguration für den Webserver

Damit der Webserver den X-Frame-Options-Header zum Client mit sendet, muss die Konfiguration des Webservers angepasst werden.

Anweisung für Apache

Header always set X-Frame-Options "deny"

Anweisung für NGINX

add_header X-Frame-Options "deny";

X-Frame-Options vs. frame-anchestors

Die Funktionalität der Policy-Direktive frame-anchestors der Content-Security-Policy (CSP) überschneidet sich mit dem X-Frame-Options-Header. Laut der W3C-Spezifikation hat die CSP frame-anchestors-Angabe Vorrang und macht die Angabe des X-Frame-Headers eigentlich obsolet. Letztendlich schadet es aber auch nicht den Header trotz CSP mitzusenden.