Contao 4 - X-FRAME-OPTION Probleme
Du erhältst Contao 4 in deinem Browser die Fehlermeldung "origin ... has been blocked by CORS policy"? Hier erfährst du wie du das Problem lösen selbst kannst!
Contao 4 - X-FRAME-OPTION Probleme
Fehler: blockiert durch x-frame-options-richtlinie
Warum erhalte ich diese Fehlermeldung?
Ein Sicherheitsfeature der Browser verhindert, dass deine Webseite oder einzelne Unterseiten in einem Frame (HTML Tag "iframe") auf fremden Domains oder Subdomains dargestellt werden kann. Dazu prüft der Browser, ob auf der eingebundenen Seite der HTTP-Header X-Frame-Options existiert und auf welche Wert dieser gesetzt ist.
Dieses Feature verhindert Clickjacking, bei dem ein Hacker die Darstellung einer Internetseite überlagert und versucht Nutzer dazu zu veranlassen, scheinbar harmlose Mausklicks oder andere potentiell schädliche Aktionen durchzuführen.
Die Grundeinstellung für Contao ist zum Beispiel:
Header set X-FRAME-OPTIONS: SAMEORIGIN
Diese Einstellung bewirkt das nur von deiner Domain und deren Subdomains das Einbinden via Frame möglich ist. Es ist ein Aufruf per http:// und https:// möglich. Versucht nun eine Fremde Domain die Inhalte deiner eigenen Webseite einzubinden, blockiert der Browser das anzeigen diese Inhalte zum Beispiel mit dieser Fehlermeldung:
Invalid 'X-Frame-Options' header encountered when loading 'https://example.org/': 'ALLOW-FROM http://example.com' is not a recognized directive. The header will be ignored.
Fehlermeldung
Access to XMLHttpRequest at 'http://example.org/api/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Lösung #1 / BestPractice
# app/config/config.yml
# einzelne Domain erlauben
nelmio_security:
clickjacking:
paths:
'^/.*': 'ALLOW-FROM http://example.org'
ODER
# alles erlauben (nicht empfohlen)
nelmio_security:
clickjacking:
paths:
'^/.*': ALLOW
Lösung #2
# in der .htaccess
# einzelne Domain erlauben
<IfModule mod_headers.c>
Header set X-Frame-Options "ALLOW-FROM http://example.org"
</IfModule>
ODER
# alles erlauben (nicht empfohlen)
<IfModule mod_headers.c>
Header set X-Frame-Options GOFORIT
</IfModule>
Update vom 13.12.2019
Firefox hat die Allow-From Direktive entfernt und andere Browser werden wahrscheinlich nachziehen
Mehr bei Firefox Site Compatibility.
Update 04.02.2020: Auch für Contao 4.8 ist die 2. Variante notwendig.
Die Lösung könnte nun wie folgt aussehen.
# in der app/config/config.yml
# einzelne Domain erlauben
# https://github.com/nelmio/NelmioSecurityBundle#content-security-policy
# (bisher ungetestet, laut Doku)
nelmio_security:
csp:
enforce:
frame-ancestors:
- 'self'
- example.org
ODER
# in der .htaccess
<IfModule mod_headers.c>
Header always append Content-Security-Policy "frame-ancestors 'self' *.example.org *.another-domain.com"
</IfModule>
Mehr Infos
Mehr Informationen zum NelmioSecurityBundle findest du unter https://github.com/nelmio/NelmioSecurityBundle
Ähnliche Beiträge
Zurzeit sind keine Nachrichten vorhanden.
*******************
Liebe Leser,
Menschen sind nicht ausschließlich Frauen, Männer, weiblich, männlich, divers – Menschen können vielfältiger sein! Wir möchten euch ALLE als Menschen ansprechen, egal von welchem Geschlecht oder welcher Kultur. Sprachlich ist es schwierig, euch alle „richtig“ anzusprechen. Daher verwenden wir – auch für eine bessere Lesbarkeit – bei Personenbezeichnungen meist die männliche Form, wie Dienstleister oder Partner. Aber eins ist uns wichtig: Keiner soll sich ausgeschlossen fühlen.
Zudem sind wir Verfechter des DU #gernperdu und gestalten so unsere tägliche Kommunikation etwas lockerer und persönlicher. Auch hier gilt: Wir bringen allen die gleiche Wertschätzung entgegen.
*******************