1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
---
title: X-Frame-Options
slug: Web/HTTP/Headers/X-Frame-Options
translation_of: Web/HTTP/Headers/X-Frame-Options
---
<div>{{HTTPSidebar}}</div>
<p>Die <strong><code>X-Frame-Options</code></strong> im <a href="/en-US/docs/Web/HTTP">HTTP</a> Antwort Header kann verwendet werden, um zu bestimmen, ob ein aufrufender Browser die Zielseite in einem {{HTMLElement("frame")}}, {{HTMLElement("iframe")}}, {{HTMLElement("embed")}} oder {{HTMLElement("object")}} rendern also einbetten darf. Webseiten können diesen Header verwenden, um {{interwiki("wikipedia", "clickjacking")}} Attacken abzuwehren, indem sie unterbinden, dass ihr Content in fremden Seiten eingebettet wird.</p>
<p>Die somit erreichte Sicherheit wird nur dann gewährleistet, wenn der User zum Aufruf einen Browser verwendet, der die <code>X-Frame-Options</code> Funktion auch unterstützt.</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Header type</th>
<td>{{Glossary("Response header")}}</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>nein</td>
</tr>
</tbody>
</table>
<h2 id="Syntax">Syntax</h2>
<p>Es gibt drei mögliche Ausprägungen der <code>X-Frame-Options</code>:</p>
<pre class="syntaxbox">X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/
</pre>
<h3 id="Ausprägungen">Ausprägungen</h3>
<p>Die Nutzung von <code>deny</code> unterbindet nicht nur die Frame-Einbindung von fremden Seiten sondern auch das Einbetten auf derselben Ursprungswebseite. Alternativ kann der Wert <code>sameorigin</code> verwendet werden, wenn die Nutzung innerhalb der gleichen Ursprungswebseite erlaubt sein soll.</p>
<dl>
<dt><code>deny</code></dt>
<dd>Die Seite kann nicht in einem Frame eingebettet werden, egal welches die aufrufende Webseite ist.</dd>
<dt><code>sameorigin</code></dt>
<dd>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 {{anch("Browser compatibility")}} zur Browserunterstützung.</dd>
<dt><code>allow-from <em>uri</em></code></dt>
<dd>Die Seite lässt sich ausschließlich dann einbetten, wenn die einbettende Seite aus der Quelle <em><code>uri</code></em> stammt. Hinweis: In Firefox besteht hier das gleiche Problem wie bei <code>sameorigin</code> - die Eltern-Frames werden nicht darauf hin geprüft, ob sie aus der gleichen Quelle stammen.</dd>
</dl>
<h2 id="Beispiele">Beispiele</h2>
<div class="note">
<p><strong>Hinweis:</strong> Die Nutzung des <code>meta tag</code> innerhalb des Webseiten-Contents hat keinen Effekt! Beispielsweise die Deklaration <code><meta http-equiv="X-Frame-Options" content="deny"></code> führt zu keiner Verhaltensänderung. Ausschließlich die Nutzung der HTTP Header (siehe Beispiele) führt zu einer Verhaltensänderung des Browser.</p>
</div>
<h3 id="Apache_Konfiguration">Apache Konfiguration</h3>
<p>Um einen Apache Webserver zum Senden des <code>X-Frame-Options</code> Headers für alle Webseiten zu bewegen, fügen Sie folgenden Eintrag in die Seiten-Konfiguration ein:</p>
<pre>Header always set X-Frame-Options "sameorigin"
</pre>
<p>Um Apache so zu konfigurieren, dass <code>X-Frame-Options</code> mit dem Wert <code>deny</code> gesendet wird, fügen Sie folgenden Eintrag in die Seiten-Konfiguration ein:</p>
<pre class="line-numbers language-html"><code class="language-html">Header set X-Frame-Options "deny"</code></pre>
<p>Um Apache so zu konfigurieren, dass <code>X-Frame-Options</code> mit dem Wert <code>allow-from</code> einen bestimmten Host freigibt, fügen Sie folgenden Eintrag in die Seiten-Konfiguration ein:</p>
<pre class="line-numbers language-html"><code class="language-html">Header set X-Frame-Options "allow-from https://example.com/"</code></pre>
<h3 id="nginx_Konfiguration">nginx Konfiguration</h3>
<p>Um einen nginx Server zum Senden des <code>X-Frame-Options</code> Header aufzufordern, fügen Sie folgenden Eintrag entweder zu Ihrer http, server oder location Konfiguration hinzu:</p>
<pre>add_header X-Frame-Options sameorigin;
</pre>
<h3 id="IIS_Konfiguration">IIS Konfiguration</h3>
<p>Um den IIS Server zum Senden des <code>X-Frame-Options</code> Headers aufzufordern, ergänzen Sie folgenden Eintrag entsprechend in Ihrer <code>Web.config</code> Datei:</p>
<pre class="brush: xml"><system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="sameorigin" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
</pre>
<h3 id="HAProxy_Konfiguration">HAProxy Konfiguration</h3>
<p>Um HAProxy zum Senden des <code>X-Frame-Options</code> Headers aufzufordern, fügen Sie diesen Eintrag zu Ihrer front-end, listen oder backend Konfiguration hinzu:</p>
<pre>rspadd X-Frame-Options:\ sameorigin</pre>
<p>Alternatively, in newer versions:</p>
<pre class="line-numbers language-html"><code class="language-html">http-response set-header X-Frame-Options sameorigin</code></pre>
<h2 id="Spezifikationen">Spezifikationen</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Spezifikation</th>
<th scope="col">Bezeichnung</th>
</tr>
<tr>
<td>{{RFC("7034")}}</td>
<td>HTTP Header Field X-Frame-Options</td>
</tr>
</tbody>
</table>
<h2 id="Browser_Kompatibilität">Browser Kompatibilität</h2>
<p class="hidden">Die hier gelistete Browser-Kompatibilitätstabelle wurde automatisch aus strukturierten Daten erzuegt. Wenn Sie Daten entsprechend ergänzen möchten, tun Sie dies bitte unter der URL <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> und senden Sie uns einen Pull Request.</p>
<p>{{Compat("http.headers.X-Frame-Options")}}</p>
<h2 id="Siehe_auch">Siehe auch</h2>
<ul>
<li><a href="https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors"><code>frame-ancestors</code> (CSP)</a></li>
<li><a class="external" href="https://blogs.msdn.com/b/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx">ClickJacking Defenses - IEBlog</a></li>
<li><a href="https://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx">Combating ClickJacking with X-Frame-Options - IEInternals</a></li>
<li><a href="https://tools.ietf.org/html/rfc7034">HTTP Header Field X-Frame-Options - RFC 7034</a></li>
<li><a href="https://w3c.github.io/webappsec/specs/content-security-policy/#directive-frame-ancestors">CSP Level 2 frame-ancestors directive</a></li>
</ul>
|