Veröffentlichungsdatum: 12. Mai 2020
Änderungsdatum: 04. Februar 2022
weblication cms iframe frame embed object layer antwortheader header kopfzeilen x-frame-options sameorigin
Über eine Einstellung in den HTTP Antwortkopfzeilen kann festgelegt werden, ob die Webseiten auf externen / fremden Seiten eingebettet werden dürfen.
Ermöglicht wird dies über eine Einstellung in PHP zum HTTP-Header, welche Weblication® CMS in einer aktuellen BASE Projektbasis bereits voreingestellt hat. Sie finden dies in der Projektkonfiguration im Block "Stammdaten".
Standardmässig ist die Einstellung "Einbetten in externen iFrames erlauben" auf NEIN gesetzt und kann bei Bedarf aktiviert werden. Ist die Auswahl auf NEIN gesetzt, werden die Webseiten des Projektes zum HTTP-Header wie folgt ausgeliefert:
X-Frame-Options: SAMEORIGIN
Somit dürfen externe Webseiten die Inhalte Ihrer Webseiten nicht mehr in einem frame, iframe, embed oder object einbinden (siehe hierzu auch Beschreibung in den weiterführenden Links am Artikelende).
Auf diese Weise werden z.B. clickjacking Attacken abgewehrt.
Die Einstellung in der Projektkonfiguration wird über die pre.php des Projektes und der Software entsprechend für die Ausgabe der Webseiten verwendet.
Clickjacking ist eine Technik, bei der ein Computerhacker die Darstellung einer Internetseite überlagert und dann deren Nutzer dazu veranlasst, scheinbar harmlose Mausklicks und/oder Tastatureingaben durchzuführen.
(Quelle: Wikipedia.org)
Wollen Sie eine bestimmte URL erlauben, können Sie den Eintrag in der Projektkonfiguration individuell im XML anpassen. Die nachfolgenden Beispiel unten zeigen links die aktivierte Einstellung im Standard und rechts eine individuell angepasste Einstellung, um https://www.weblication.de das Einbetten zu erlauben. Die URL passen Sie auf die von Ihnen gewünschte URL an.
<variable description="Einbetten in externen iFrames erlauben" key="xframe_options" type="char.select" values="|SAMEORIGIN" texts="Ja|Nein">SAMEORIGIN</variable>
<variable description="Einbetten in externen iFrames erlauben" key="xframe_options" type="char.select" values="|SAMEORIGIN|ALLOW-FROM https://www.weblication.de" texts="Ja|Nein|nur weblication.de">ALLOW-FROM https://www.weblication.de</variable>
Beachten Sie beim Einsatz von allow-from die Hinweise auf der Mozilla-Developer Seite, womit dies eine veraltete Richtlinie ist und nicht mehr verwendet werden sollte, statt dessen CSP frame-ancestors (siehe weiterführende Links unten).
Sollte eine über iFrame, Embed-Layer o.ä. eingebundene Webseite nicht aufrufbar sein, wird dies i.d.R. vom Browser mit einer Fehlermeldung quittiert, welche sich in der Browserkonsole einsehen lässt.
Firefox: Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf https://www.Externe-Domain.tld/?viewmode=blank&linkback=no. (Grund: CORS-Anschlag schlug fehl). Chrome: Access to XMLHttpRequest at 'https://www.Externe-Domain.tld/?viewmode=blank&linkback=no' from origin 'http://www.Ihre-Domain.tld' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Sofern die Webseiten eines Projektes trotz Erlaubnis zum Einbetten in externe iFrames im Request-Header nach wie vor "SAMEORIGIN" ausgeben, kann dies folgende Ursachen haben:
Sollte nach korrekter Definition eine per Ajax aufgerufene externe URL (z.B. Link mit Ziel-Einstellung "In einem Layer laden") nicht öffnen und im Browser einen Fehler in der Konsole werfen, muss ggf. bei der einzubindenden externen Seite noch folgendes im Header mitgegeben werden:
@header('Access-Control-Allow-Origin: https://www.Ihre-Domain.tld');