Die X-Frame-Options im HTTP Antwort Header kann verwendet werden, um zu bestimmen, ob ein aufrufender Browser die Zielseite in einem <frame>, <iframe><embed> oder <object> rendern also einbetten darf. Webseiten können diesen Header verwenden, um clickjacking Attacken abzuwehren, indem sie unterbinden, dass ihr Content in fremden Seiten eingebettet wird.

Die somit erreichte Sicherheit wird nur dann gewährleistet, wenn der User zum Aufruf einen Browser verwendet, der die X-Frame-Options Funktion auch unterstützt.

Header type Response header
Forbidden header name nein

Syntax

Es gibt drei mögliche Ausprägungen der X-Frame-Options:

X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/

Ausprägungen

Die Nutzung von deny unterbindet nicht nur die Frame-Einbindung von fremden Seiten sondern auch das Einbetten auf derselben Ursprungswebseite. Alternativ kann der Wert sameorigin verwendet werden, wenn die Nutzung innerhalb der gleichen Ursprungswebseite erlaubt sein soll.

deny
Die Seite kann nicht in einem Frame eingebettet werden, egal welches die aufrufende Webseite ist.
sameorigin
Die Seite kann nur als Frame eingebettet werden, wenn beide von der gleichen Quellseite (same origin) stammen. Die Spezifikation lässt es Browserherstellern offen, auf welcher Ebene dieser Wert greift: auf höchster Ebene, der nächsthöheren oder der gesamten Kette. Es wird jedoch festgestellt, dass die Option wenig nützlich ist, sofern nicht alle Eltern-Webseiten von der gleichen Quelle stammen (siehe Bug 725490).  Siehe weiterhin Browser compatibility zur Browserunterstützung.
allow-from uri
Die Seite lässt sich ausschließlich dann einbetten, wenn die einbettende Seite aus der Quelle uri stammt. Hinweis: In Firefox besteht hier das gleiche Problem wie bei sameorigin -  die Eltern-Frames werden nicht darauf hin geprüft, ob sie aus der gleichen Quelle stammen.

Beispiele

Hinweis: Die Nutzung des meta tag innerhalb des Webseiten-Contents hat keinen Effekt! Beispielsweise die Deklaration <meta http-equiv="X-Frame-Options" content="deny"> führt zu keiner Verhaltensänderung. Ausschließlich die Nutzung der HTTP Header (siehe Beispiele) führt zu einer Verhaltensänderung des Browser.

Apache Konfiguration

Um einen Apache Webserver zum Senden des X-Frame-Options Headers für alle Webseiten zu bewegen, fügen Sie folgenden Eintrag in die Seiten-Konfiguration ein:

Header always set X-Frame-Options "sameorigin"

Um Apache so zu konfigurieren, dass X-Frame-Options mit dem Wert deny gesendet wird, fügen Sie folgenden Eintrag in die Seiten-Konfiguration ein:

Header set X-Frame-Options "deny"

Um Apache so zu konfigurieren, dass X-Frame-Options mit dem Wert allow-from einen bestimmten Host freigibt, fügen Sie folgenden Eintrag in die Seiten-Konfiguration ein:

Header set X-Frame-Options "allow-from https://example.com/"

nginx Konfiguration

Um einen nginx Server zum Senden des X-Frame-Options Header aufzufordern, fügen Sie folgenden Eintrag entweder zu Ihrer http, server oder location Konfiguration hinzu:

add_header X-Frame-Options sameorigin;

IIS Konfiguration

Um den IIS Server zum Senden des X-Frame-Options Headers aufzufordern, ergänzen Sie folgenden Eintrag entsprechend in Ihrer Web.config Datei:

<system.webServer>
  ...

  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="sameorigin" />
    </customHeaders>
  </httpProtocol>

  ...
</system.webServer>

HAProxy Konfiguration

Um HAProxy zum Senden des X-Frame-Options Headers aufzufordern, fügen Sie diesen Eintrag zu Ihrer front-end, listen oder backend Konfiguration hinzu:

rspadd X-Frame-Options:\ sameorigin

Alternatively, in newer versions:

http-response set-header X-Frame-Options sameorigin

Spezifikationen

Spezifikation Bezeichnung
RFC 7034 HTTP Header Field X-Frame-Options

Browser Kompatibilität

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidFirefox für AndroidOpera für AndroidSafari auf iOSSamsung Internet
X-Frame-OptionsChrome Vollständige Unterstützung 4Edge Vollständige Unterstützung JaFirefox Vollständige Unterstützung 3.6.9IE Vollständige Unterstützung 8Opera Vollständige Unterstützung 10.5Safari Vollständige Unterstützung 4WebView Android Vollständige Unterstützung JaChrome Android Vollständige Unterstützung JaFirefox Android Vollständige Unterstützung JaOpera Android Vollständige Unterstützung JaSafari iOS Vollständige Unterstützung JaSamsung Internet Android Vollständige Unterstützung Ja
ALLOW-FROMChrome Keine Unterstützung NeinEdge Vollständige Unterstützung JaFirefox Vollständige Unterstützung 18IE Vollständige Unterstützung 8Opera Keine Unterstützung NeinSafari Keine Unterstützung NeinWebView Android Keine Unterstützung NeinChrome Android Keine Unterstützung NeinFirefox Android Vollständige Unterstützung 18Opera Android ? Safari iOS Keine Unterstützung NeinSamsung Internet Android Keine Unterstützung Nein
SAMEORIGINChrome Vollständige Unterstützung Ja
Hinweise
Vollständige Unterstützung Ja
Hinweise
Hinweise Starting in Chrome 61, this applies to all of a frame's ancestors.
Edge ? Firefox Vollständige Unterstützung Ja
Hinweise
Vollständige Unterstützung Ja
Hinweise
Hinweise Starting in Firefox 59, this applies to all of a frame's ancestors.
IE Vollständige Unterstützung 8Opera Vollständige Unterstützung Ja
Hinweise
Vollständige Unterstützung Ja
Hinweise
Hinweise Starting in Opera 48, this applies to all of a frame's ancestors.
Safari Vollständige Unterstützung JaWebView Android Vollständige Unterstützung Ja
Hinweise
Vollständige Unterstützung Ja
Hinweise
Hinweise Starting in Chrome 61, this applies to all of a frame's ancestors.
Chrome Android Vollständige Unterstützung Ja
Hinweise
Vollständige Unterstützung Ja
Hinweise
Hinweise Starting in Chrome 61, this applies to all of a frame's ancestors.
Firefox Android Vollständige Unterstützung Ja
Hinweise
Vollständige Unterstützung Ja
Hinweise
Hinweise Starting in Firefox 59, this applies to all of a frame's ancestors.
Opera Android Vollständige Unterstützung Ja
Hinweise
Vollständige Unterstützung Ja
Hinweise
Hinweise Starting in Opera 48, this applies to all of a frame's ancestors.
Safari iOS ? Samsung Internet Android Vollständige Unterstützung Ja

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Kompatibilität unbekannt  
Kompatibilität unbekannt
Siehe Implementierungshinweise.
Siehe Implementierungshinweise.

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: fscholz, mdnwebdocs-bot, javafrog, Lars-Wunderlich
Zuletzt aktualisiert von: fscholz,