HSTS in Contao konfigurieren
HTTP Strict Transport Security in Contao aktivieren — per Symfony EventSubscriber oder .htaccess. Mit Preload-Voraussetzungen und schrittweiser max-age-Erhöhung.
HTTP Strict Transport Security in Contao
HTTP Strict Transport Security (HSTS) weist Browser an, ausschließlich verschlüsselte HTTPS-Verbindungen zu verwenden. Der Header verhindert SSL-Stripping-Angriffe und ist mit 15 von 166 Punkten ein wichtiger Faktor im Wolf-Agents Web Security Check.
In Contao setzen Sie HSTS am saubersten über einen Symfony EventSubscriber. Alternativ funktioniert die public/.htaccess auf Apache-Servern. Voraussetzung ist ein funktionierendes HTTPS mit gültigem TLS-Zertifikat auf der Domain und allen Subdomains.
HSTS-Implementierung in Contao
Der EventSubscriber ist der empfohlene Weg — er funktioniert unabhängig vom Webserver und überlebt Contao-Updates. Die .htaccess ist der schnelle Fallback für Apache-Hosting.
<?php
// src/EventSubscriber/HstsSubscriber.php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class HstsSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents(): array {
return [KernelEvents::RESPONSE => ['onResponse', 0]];
}
public function onResponse(ResponseEvent $event): void {
$response = $event->getResponse();
$response->headers->set(
'Strict-Transport-Security',
'max-age=31536000; includeSubDomains; preload'
);
}
} # public/.htaccess — HSTS-Fallback
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule> Starten Sie mit max-age=300 (5 Minuten) zum Testen. Erhöhen Sie dann auf 604800 (1 Woche) und schließlich auf 31536000 (1 Jahr). So können Sie bei Problemen schnell zurückrudern.
Verifizierung
Nach der Konfiguration leeren Sie den Contao-Cache und prüfen den Header per curl. Der HSTS-Header wird nur über HTTPS ausgeliefert — bei HTTP-Anfragen ignoriert der Browser ihn.
# Cache leeren
vendor/bin/contao-console cache:clear
# HSTS-Header prüfen
curl -sI https://ihre-domain.de | grep -i strict-transport-security
# Erwartete Ausgabe:
# strict-transport-security: max-age=31536000; includeSubDomains; preload Häufige Fehler bei HSTS in Contao
contao-console cache:clear vergessen
Nach Änderungen am EventSubscriber muss vendor/bin/contao-console cache:clear ausgeführt werden. Ohne Cache-Invalidierung wird der neue Subscriber nicht geladen und der HSTS-Header fehlt weiterhin.
HSTS ohne funktionierendes HTTPS auf Subdomains
Mit includeSubDomains müssen alle Subdomains gültiges HTTPS haben. Prüfen Sie vor der Aktivierung, ob z.B. mail.ihre-domain.de oder staging.ihre-domain.de erreichbar sind.
Contao-Extension überschreibt HSTS-Konfiguration
Manche Extensions registrieren eigene Response-Listener. Prüfen Sie die Subscriber-Priorität mit debug:event-dispatcher kernel.response. Ein Subscriber mit höherer Priorität kann Ihren HSTS-Header überschreiben.
Compliance-Relevanz
HSTS ist eine Grundvoraussetzung für Transportsicherheit und wird von allen relevanten Compliance-Frameworks gefordert.
Wie steht Ihre Domain bei HSTS?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.