Wie funktioniert Content-Security-Policy mit X-Frame-Optionen?

9

Wird Content-Security-Policy ignoriert X-Frame-Options , zurückgegeben von einem Server, oder ist X-Frame-Options immer noch primär?

Angenommen, ich habe:

lädt der Browser diesen Rahmen?

Es ist unklar.
Auf der einen Seite bestreitet Ссылка ausdrücklich das Framing.
Auf der anderen Seite erlaubt Ссылка explizit das Framing für Ссылка .

    
Yeldar Kurmangaliyev 02.11.2016, 06:34
quelle

3 Antworten

14

Die frame-src CSP-Anweisung (die veraltet ist und ersetzt durch child-src ) bestimmt, welche Quellen in einem Frame auf einer Seite verwendet werden können.

Der Header X-Frame-Options response bestimmt andererseits, welche anderen Seiten diese Seite in einem iframe verwenden können.

In Ihrem Fall zeigt http://a.com mit X-Frame-Options: DENY an, dass keine andere Seite es in einem Frame verwenden kann. Es spielt keine Rolle, was http://b.com in seinem CSP hat - keine Seite kann http://a.com in einem Frame verwenden.

Der Ort, an dem sich X-Frame-Options mit CSP schneidet, erfolgt über die frame-ancestors Richtlinie . Aus der CSP-Spezifikation (Hervorhebung von mir):

  

Diese Anweisung ähnelt dem Header X-Frame-Options , der mehrere enthält   Benutzeragenten haben implementiert. Der Quellcode 'none' ist   entspricht ungefähr dem DENY , 'self' bis SAMEORIGIN dieses Headers,   und so weiter. Der Hauptunterschied besteht darin, dass viele Benutzeragenten implementieren    SAMEORIGIN , so dass es nur mit der obersten Ebene übereinstimmt   Standort des Dokuments. Diese Direktive überprüft jeden Vorfahren. Wenn überhaupt   Vorfahr passt nicht, die Last wird abgebrochen. [RFC7034]

     

Die frame-ancestors -Direktive hebt den Header X-Frame-Options auf. Wenn eine Ressource über beide Richtlinien verfügt, sollte die Richtlinie frame-ancestors durchgesetzt und die Richtlinie X-Frame-Options ignoriert werden.

Eine ältere Frage Ich habe angegeben, dass dies zu dieser Zeit in Firefox nicht funktioniert hat, aber hoffentlich haben sich die Dinge jetzt geändert.

UPDATE April 2018:

  

Inhaltssicherheitsrichtlinie: Die Richtlinie 'child-src' wurde nicht mehr unterstützt. Bitte verwenden Sie die Anweisung 'worker-src', um Arbeiter zu steuern, oder die Anweisung 'frame-src', um Rahmen zu steuern.

Sieht so aus, als wäre child-src jetzt die veraltete und frame-src ist zurück.

    
Anand Bhat 04.11.2016 07:46
quelle
1

Die Antwort wurde durch Tests in der Praxis gefunden.
Ich habe zwei Websites erstellt und die beschriebene Situation reproduziert.

Es scheint, dass X-Frame-Optionen primär sind.
Wenn der Zielserver die Einrahmung verweigert, kann die Client-Website diese Seite nicht in iframe anzeigen, je nachdem, welche Werte von Content-Security-Policy festgelegt sind.

Ich habe jedoch keine Bestätigungen in der Dokumentation gefunden.

Getestet auf Chrome 54 und IE 11.

    
Yeldar Kurmangaliyev 02.11.2016 10:52
quelle
1

Dies ist nicht allgemein zutreffend; Chrome ignoriert X-Frame-Optionen, während Safari 9 und darunter CSP-Frame-Vorfahren ignoriert. Safari 10 respektiert die CSP-Frame-Vorfahren-Direktive, priorisiert jedoch X-Frame-Optionen, falls angegeben.

    
NIRUPAM TEWARY 26.06.2017 04:19
quelle