Erweiterte Header in Drupal konfigurieren
Origin-Agent-Cluster, X-DNS-Prefetch-Control und weitere fortgeschrittene Header in Drupal — per EventSubscriber oder .htaccess.
Erweiterte Security Headers in Drupal
Erweiterte Security Headers bieten zusätzliche Schutzschichten, die über die Standard-Header hinausgehen. Origin-Agent-Cluster isoliert Ihre Origin im Browser-Prozess, X-DNS-Prefetch-Control verhindert DNS-Anfragen an Drittdomains und X-Permitted-Cross-Domain-Policies blockiert Flash- und PDF-basierte Cross-Domain-Zugriffe. Zusammen bringen diese Header 4 von 166 Punkten im Wolf-Agents Web Security Check.
seckit unterstützt diese Header nicht. Sie benötigen einen EventSubscriber oder die .htaccess. Da diese Header keine Konfigurationskomplexität haben (ein fester Wert pro Header), ist die Implementierung schnell erledigt.
Mit dem kostenlosen Wolf-Agents Web Security Check prüfen Sie in wenigen Sekunden, ob alle erweiterten Header korrekt gesetzt sind. Der Scanner erkennt fehlende Header, falsche Werte und gibt konkrete Handlungsempfehlungen für Drupal-Installationen.
Implementierung
Alle erweiterten Header können Sie in einem einzigen EventSubscriber zusammenfassen oder in der .htaccess ergänzen.
<?php
// modules/custom/security_headers/src/EventSubscriber/AdvancedHeadersSubscriber.php
namespace Drupal\security_headers\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class AdvancedHeadersSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
return [KernelEvents::RESPONSE => ['onResponse', 0]];
}
public function onResponse(ResponseEvent $event) {
$response = $event->getResponse();
// Origin-Agent-Cluster: Prozess-Isolierung
$response->headers->set('Origin-Agent-Cluster', '?1');
// X-DNS-Prefetch-Control: DNS-Prefetching deaktivieren
$response->headers->set('X-DNS-Prefetch-Control', 'off');
// X-Download-Options: IE-spezifisch, "Open"-Button deaktivieren
$response->headers->set('X-Download-Options', 'noopen');
// X-Permitted-Cross-Domain-Policies: Flash/PDF blockieren
$response->headers->set('X-Permitted-Cross-Domain-Policies',
'none');
}
}# .htaccess — Erweiterte Header
<IfModule mod_headers.c>
Header always set Origin-Agent-Cluster "?1"
Header always set X-DNS-Prefetch-Control "off"
Header always set X-Download-Options "noopen"
Header always set X-Permitted-Cross-Domain-Policies "none"
</IfModule>Registrieren Sie den EventSubscriber in modules/custom/security_headers/security_headers.services.yml mit dem Tag event_subscriber. Ohne diese Datei wird der Subscriber nicht geladen — auch nicht nach drush cr.
Verifizierung
Alle vier Header müssen in der Response erscheinen.
# Cache leeren und Header prüfen
drush cr
curl -sI https://ihre-domain.de | grep -iE "(origin-agent|x-dns-prefetch|x-download|x-permitted)"
# Erwartete Ausgabe:
# origin-agent-cluster: ?1
# x-dns-prefetch-control: off
# x-permitted-cross-domain-policies: noneHäufige Fehler
drush cr vergessen nach EventSubscriber-Änderung
Jede Änderung am EventSubscriber oder der services.yml erfordert ein drush cr. Ohne Cache Rebuild kennt Drupal den geänderten Service nicht.
X-DNS-Prefetch-Control bricht Performance
off deaktiviert DNS-Prefetching für alle Links. Dies kann die wahrgenommene Performance verringern, erhöht aber die Privatsphäre. Für Performance-kritische Seiten wägen Sie Datenschutz gegen Ladezeit ab.
Drupal Core-Update überschreibt .htaccess
Bei Core-Updates gehen .htaccess-Änderungen verloren. Nutzen Sie den EventSubscriber für eine update-sichere Konfiguration.
Doppelte Header durch EventSubscriber und .htaccess
Wenn sowohl der EventSubscriber als auch die .htaccess denselben Header setzen, erscheint er doppelt in der Response. Nutzen Sie nur einen der beiden Wege — der EventSubscriber ist die empfohlene Methode.
Compliance-Relevanz
Erweiterte Security Headers gehören zum Defense-in-Depth-Ansatz und vervollständigen die Härtung Ihrer Drupal-Installation auf HTTP-Ebene.
Zusammenfassung
Erweiterte Security Headers in Drupal werden per EventSubscriber oder .htaccess konfiguriert — seckit unterstützt diese Header nicht. Alle vier Header haben feste Werte ohne Varianten und können sofort produktiv gesetzt werden. Vergessen Sie nicht, den EventSubscriber in der services.yml zu registrieren und nach jeder Änderung drush cr auszuführen.
Wie steht Ihre Domain bei Erweiterte Header?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.