Cross-Origin Headers in Contao konfigurieren

Cross-Origin Headers (CORP/COEP/COOP) in Contao aktivieren — per Symfony EventSubscriber oder .htaccess. Mit Verifizierung und häufigen Fehlern.

Contao · Schritt für Schritt

Cross-Origin Headers in Contao

Cross-Origin Headers (CORP, COEP, COOP) schützen gegen Spectre-Angriffe. Mit 30 von 166 Punkten haben sie hohen Einfluss im Wolf-Agents Web Security Check.

In Contao setzen Sie Cross-Origin Headers per EventSubscriber. Vorsicht: COEP kann Extensions brechen, die externe Ressourcen laden.

In Contao-Projekten werden Security-Header typischerweise auf drei Ebenen konfiguriert: in der config/config.yaml fuer Symfony-Framework-Header, per EventSubscriber fuer dynamische Header und in der public/.htaccess fuer Apache-Level-Header. Fuer Cross-Origin Headers empfehlen wir die Konfiguration per EventSubscriber, da dieser die meiste Flexibilitaet bietet und nicht von der Webserver-Konfiguration abhaengt.

Nach jeder Aenderung an der Header-Konfiguration muessen Sie den Contao-Cache leeren: vendor/bin/contao-console cache:clear. Ohne Cache-Clear werden Aenderungen an der config.yaml oder an EventSubscribern nicht wirksam. In Produktionsumgebungen verwenden Sie cache:clear --env=prod fuer den korrekten Cache-Kontext.

Cross-Origin Headers-Implementierung in Contao

Der EventSubscriber ist der empfohlene Weg — unabhängig vom Webserver, überlebt Updates. Die .htaccess ist der schnelle Fallback.

EventSubscriber (empfohlen)
CrossOriginSubscriber.php Empfohlen
<?php
// src/EventSubscriber/CrossOriginSubscriber.php
namespace AppEventSubscriber;
use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentHttpKernelEventResponseEvent;
use SymfonyComponentHttpKernelKernelEvents;
class CrossOriginSubscriber implements EventSubscriberInterface {
  public static function getSubscribedEvents(): array {
    return [KernelEvents::RESPONSE => ['onResponse', 0]];
  }
  public function onResponse(ResponseEvent $event): void {
    $response = $event->getResponse();
    $response->headers->set('Cross-Origin-Opener-Policy', 'same-origin');
    $response->headers->set('Cross-Origin-Embedder-Policy', 'require-corp');
    $response->headers->set('Cross-Origin-Resource-Policy', 'same-origin');
  }
}
.htaccess Fallback
public/.htaccess Fallback
# public/.htaccess — Cross-Origin Headers (CORP/COEP/COOP)
<IfModule mod_headers.c>
  Header always set Cross-Origin-Opener-Policy "same-origin"
</IfModule>
Cache leeren nicht vergessen

Nach jeder Änderung: vendor/bin/contao-console cache:clear

Verifizierung

Nach der Konfiguration prüfen Sie den Header per curl. Testen Sie auf verschiedenen Seitentypen — Startseite, Detailseiten und Formulare.

Terminal Verifizierung
# Cache leeren
vendor/bin/contao-console cache:clear
# Header prüfen
curl -sI https://ihre-domain.de | grep -i cross-origin
# Erwartete Ausgabe:
# cross-origin-opener-policy: same-origin

Häufige Fehler bei Cross-Origin Headers in Contao

Isotope eCommerce Checkout blockiert

COEP blockiert Payment-iFrames. Nutzen Sie credentialless statt require-corp.

Contao-Extension überschreibt Konfiguration

Extensions mit Response-Listenern können Header überschreiben.

Externe Bilder in Content-Elementen blockiert

COEP require-corp erfordert das crossorigin-Attribut bei externen Ressourcen.

Compliance-Relevanz

Die korrekte Implementierung von Cross-Origin Headers ist nicht nur eine technische Best Practice, sondern eine Anforderung, die bei Sicherheitsaudits und Penetrationstests regelmaessig geprueft wird. Fehlende oder falsch konfigurierte Header koennen zu Audit-Findings fuehren und die Zertifizierung gefaehrden.

Cross-Origin Headers (CORP/COEP/COOP) erfüllt Anforderungen aus mehreren Compliance-Frameworks.

NIS2Art. 21(e) — Sicherheit bei Erwerb, Entwicklung und Wartung von Informationssystemen
BSIAPP.3.1 — Webserver-Absicherung mit Security Headern
DSGVOArt. 32 — Technische Maßnahmen zum Schutz personenbezogener Daten

Wie steht Ihre Domain bei Cross-Origin Headers?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.