2016-08-03 17 views
1

Ich habe einen Fehler, wenn ich X-Frame-Header-Option mit Apache verwendet.Apache X-Frame-Optionen Zulassen von mehreren Domänen

Header always append X-Frame-Options ALLOW-FROM site1,site2,site3 

oder

Header always append X-Frame-Options ALLOW-FROM=site1,site2,site3 

oder

Header always append X-Frame-Options ALLOW-FROM=site1 
Header always append X-Frame-Options ALLOW-FROM=site2 
Header always append X-Frame-Options ALLOW-FROM=site3 

, wie ich die X-Frame-Options einstellen könnte: allow-FROM mehr als eine einzelne Domain zu unterstützen?

Danke!

Antwort

-1
Header always append X-Frame-Options ALLOW-FROM=site1 
Header always append X-Frame-Options ALLOW-FROM=site2 
Header always append X-Frame-Options ALLOW-FROM=site3 

Dieser Weg ist in Ordnung.
Aber ich habe einen Fehler, wenn ich es benutze.
Vielleicht mache ich ein falsches Zeichen.

+0

Wie tun, dass Sie in PHP? ist es möglich, innerhalb einer for-Schleife um mehrere Header und wie? –

0

EDIT 17/01/2018:

Diese Lösung unten ist nicht korrekt, da die Einstellung auf jeder Zeile wird die vorherige überschreiben. also erlaubst du nur http://example.com/

Endlich habe ich die richtige Syntax dafür gefunden. Nach dieser Seite: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

Header set X-Frame-Options "ALLOW-FROM https://example.com/" 

Das ist für mich gearbeitet:

Header always set X-Frame-Options "ALLOW-FROM https://www.example.com/" 
Header always set X-Frame-Options "ALLOW-FROM https://example.com/" 
Header always set X-Frame-Options "ALLOW-FROM http://www.example.com/" 
Header always set X-Frame-Options "ALLOW-FROM http://example.com/" 
1

EDIT 17/01/2018: Dies ist, was richtig ist:

Header set X-Frame-Options SAMEORIGIN 
Header append X-Frame-Options "ALLOW-FROM http://www.example.com/" 
Header append X-Frame-Options "ALLOW-FROM http://example.com/" 
Header append X-Frame-Options "ALLOW-FROM https://www.example.com/" 
Header append X-Frame-Options "ALLOW-FROM https://example.com/" 

So Grundsätzlich erlauben Sie nur Iframes von Ihrer Site (SAMEORIGIN) und Sie geben mit "append" eine Liste von allen an geschuldete URL Wenn Sie nicht "append" hinzufügen, überschreibt jede Zeile die vorherige Zeile.

Das funktioniert mit dem Internet Explorer 11, funktioniert nicht in Firefox 57 und wird von Chrome ignoriert ...

Tests mit https://securityheaders.io werden Ihnen keine „A“ geben, weil sie nicht mehrere verarbeiten kann uri

We couldn't detect a valid configuration. Expected values are "DENY", "SAMEORIGIN", "ALLOW-FROM (URL)" and "ALLOWALL". 

eine weitere Möglichkeit, die in IE11 und Firefox scheint zu funktionieren ist:

Header always set X-Frame-Options "ALLOW-FROM https://www.example.fr/ https://example.fr/ http://www.example.fr/ http://example.fr/" 

Es gibt ein "A", wenn Sie das Ergebnis überprüfen mit https://securityheaders.io

Übrigens frage ich mich, was ist der Sinn der Verwendung einer Sicherheitseinstellung, die Sie mit dem am häufigsten verwendeten Browser der Welt umgehen können (Chrome)?

+0

Danke! Dein Beitrag hat mich aufgedeckt, dass ich 'set' anstelle von' append' benutzt habe – cthorpe

0

Die Spezifikation für X-Frame-Optionen spezifiziert nur die Verwendung von DENY, SAMEORIGIN und ALLOW-FROM (https://tools.ietf.org/html/rfc7034#section-2.1). Einige Browser unterstützen möglicherweise mehrere ALLOW-FROM, aber viele Browser unterstützen ALLOW-FROM überhaupt nicht.

Am besten implementieren Sie den Content-Security-Policy-Header mit der Frame-Ahnen-Direktive. Dies ermöglicht die Konfiguration mehrerer URIs und wird von den meisten Browsern, außer IE und Edge 14 und darunter, verstanden.

Für die Unterstützung von IE und Edge 14 können Sie auch die X-Frame-Optionen mit ALLOW-FROM einstellen. Wenn Sie eine Whitelist mit Werten erstellen, können Sie den ALLOW-FROM-URI basierend auf dem Verweis festlegen.

Es tut nicht weh, beide Header zu setzen. Browser, die Frame-Vorfahren von Content-Security-Policy verstehen, ignorieren X-Frame-Optionen und diejenigen, die Frame-Vorfahren nicht verstehen, ignorieren sie und verwenden X-Frame-Optionen, falls verfügbar. Die Kombination https://caniuse.com/#search=csp und https://caniuse.com/#search=x-frame-options dies für alle Browser arbeitet mit Ausnahme von "UC Browser für Android"

0
SetEnvIf Referer "^(https:\/\/.*\.example1\.com)/.*" X_FRAME_OPTIONS_ALLOWED=$1 
SetEnvIf Referer "^(https:\/\/.*\.example2\.com)/.*" X_FRAME_OPTIONS_ALLOWED=$1 

Header set X-Frame-Options SAMEORIGIN 
Header append X-Frame-Options "ALLOW-FROM %{X_FRAME_OPTIONS_ALLOWED}e" env=X_FRAME_OPTIONS_ALLOWED`