Cross-Origin Headers in Drupal konfigurieren
CORP, COEP und COOP gegen Spectre-Angriffe in Drupal — nur per EventSubscriber oder .htaccess, da seckit diese Header nicht unterstützt.
Cross-Origin Headers in Drupal
Cross-Origin Headers (CORP, COEP, COOP) schützen gegen Spectre-basierte Seitenkanalangriffe und kontrollieren, wie Ihre Website mit Cross-Origin-Ressourcen interagiert. Diese drei Header zusammen bringen 30 von 166 Punkten im Wolf-Agents Web Security Check.
Wichtig: seckit unterstützt diese Header nicht. Sie benötigen einen Custom EventSubscriber oder die .htaccess. Besondere Vorsicht bei Cross-Origin-Embedder-Policy: require-corp — dieser Header blockiert alle Cross-Origin-Ressourcen, die kein explizites CORP setzen (z.B. externe Bilder, Videos, iframes).
Der Wolf-Agents Web Security Check prüft alle drei Cross-Origin Headers einzeln und bewertet sie zusammen mit 30 von 166 Punkten. Fehlende oder falsch konfigurierte Header werden im Scan-Ergebnis mit konkreten Drupal-spezifischen Empfehlungen angezeigt.
Implementierung per EventSubscriber
Da seckit diese Header nicht unterstützt, ist der EventSubscriber der sauberste Weg. Vergessen Sie nicht, den Service in der services.yml zu registrieren.
<?php
// modules/custom/security_headers/src/EventSubscriber/CrossOriginSubscriber.php
namespace Drupal\security_headers\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class CrossOriginSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
return [KernelEvents::RESPONSE => ['onResponse', 0]];
}
public function onResponse(ResponseEvent $event) {
$response = $event->getResponse();
// Cross-Origin-Opener-Policy
$response->headers->set('Cross-Origin-Opener-Policy',
'same-origin');
// Cross-Origin-Resource-Policy
$response->headers->set('Cross-Origin-Resource-Policy',
'same-origin');
// Cross-Origin-Embedder-Policy
// VORSICHT: Kann externe Ressourcen blockieren!
$response->headers->set('Cross-Origin-Embedder-Policy',
'require-corp');
}
}# .htaccess — Cross-Origin Headers
<IfModule mod_headers.c>
Header always set Cross-Origin-Opener-Policy "same-origin"
Header always set Cross-Origin-Resource-Policy "same-origin"
Header always set Cross-Origin-Embedder-Policy "require-corp"
</IfModule>Verifizierung
Alle drei Cross-Origin-Header müssen in der Response erscheinen. Testen Sie besonders Seiten mit externen Ressourcen.
# Cache leeren und Header prüfen
drush cr
curl -sI https://ihre-domain.de | grep -i cross-origin
# Erwartete Ausgabe:
# cross-origin-opener-policy: same-origin
# cross-origin-resource-policy: same-origin
# cross-origin-embedder-policy: require-corpHäufige Fehler
COEP blockiert externe Ressourcen
require-corp blockiert alle Cross-Origin-Ressourcen ohne explizites CORP. YouTube-Embeds, Google Fonts und externe Bilder funktionieren nicht mehr. Starten Sie mit credentialless statt require-corp oder verzichten Sie zunächst auf COEP.
Views-Modul lädt externe Ressourcen
Drupal Views können externe Bilder oder Medien einbinden. Mit aktivem COEP werden diese blockiert. Prüfen Sie alle Views auf externe Ressourcen-Referenzen.
EventSubscriber nicht registriert
Ohne korrekte services.yml wird der EventSubscriber nicht geladen. Prüfen Sie Dateiname, Namespace und Tag. drush cr nach jeder Änderung.
Media-Modul bricht mit CORP: same-origin
Drupals Media-Modul lädt oEmbed-Daten von externen Diensten. Mit CORP: same-origin werden diese Requests blockiert. Setzen Sie CORP für /media/oembed-Pfade auf cross-origin.
Compliance-Relevanz
Cross-Origin Headers schützen gegen Spectre-basierte Seitenkanalangriffe und erzwingen Browser-seitige Prozess-Isolation zwischen Origins.
Zusammenfassung
Cross-Origin Headers in Drupal erfordern einen Custom EventSubscriber, da seckit diese Header nicht unterstützt. Starten Sie vorsichtig: Setzen Sie zunächst nur COOP und CORP und testen Sie die Auswirkungen auf Views, Media-Modul und externe Embeds. COEP mit require-corp kann externe Ressourcen blockieren — verwenden Sie alternativ credentialless.
Wie steht Ihre Domain bei Cross-Origin Headers?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.