HSTS

Last change on 2020-01-21 • Created on 2020-01-20 • ID: KO-507BC

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>

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.
Table of Contents