1. Was ist HSTS?
HTTP Strict Transport Security (HSTS) ist ein Sicherheitsmechanismus für HTTPS-Verbindungen.
Er schützt vor:
- Downgrade-Angriffen (erzwungene Umstellung auf HTTP)
- Session Hijacking (Diebstahl von Sitzungsinformationen)
Der Server teilt dem Browser mit, dass er für einen bestimmten Zeitraum (max-age) ausschließlich verschlüsselte Verbindungen zu dieser Domain verwenden soll.
2. Funktionsweise
HSTS wird über den HTTP-Response-Header Strict-Transport-Security gesetzt.
Ein Beispiel-Header sieht so aus:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age=31536000 → 1 Jahr in Sekunden
includeSubDomains → Gilt auch für alle Subdomains
preload → Domain kann in die HSTS-Preload-Liste von Browsern aufgenommen werden
3. Voraussetzungen
- Die Website muss bereits vollständig per HTTPS erreichbar sein.
- Alle Ressourcen (Bilder, Skripte, CSS) sollten über HTTPS geladen werden, sonst blockiert der Browser sie.
- Für preload muss die Domain dauerhaft HTTPS erzwingen.
4. Umsetzung in .htaccess
Um HSTS zu aktivieren und gleichzeitig alle HTTP-Aufrufe auf HTTPS umzuleiten, kannst du folgende .htaccess-Regeln verwenden:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
5. Hinweise & Best Practices
- Teste die Umleitung und den Header zuerst in einer Testumgebung.
- Achte darauf, dass Header always set statt nur Header set genutzt wird, damit der Header auch bei Umleitungen gesendet wird.
- Überprüfe die HSTS-Konfiguration mit Tools wie: https://hstspreload.org https://securityheaders.com
- Wenn du preload setzt, kannst du die Domain in die HSTS-Preload-List eintragen, was HTTPS für alle Nutzer erzwingt.