Zum Hauptinhalt springen
EU Web Security: In 10 Schritten zum besseren Rating · Part 1

HSTS in 5 Minuten: Warum 72% der EU-Websites ihre Nutzer nicht schützen

HTTP Strict Transport Security verhindert Downgrade-Angriffe — und fehlt bei drei von vier europäischen Websites. So aktivieren Sie es.

· SiteGuardian

Teil 1 der Serie „EU Web Security: In 10 Schritten zum besseren Rating"


Das Problem in 30 Sekunden

Ihre Website hat ein TLS-Zertifikat. Gut. Aber wenn ein Nutzer http://ihre-domain.de eingibt — was passiert?

Ohne HSTS: Der Browser verbindet sich unverschlüsselt. Die Seite leitet auf HTTPS um. Aber in den Millisekunden zwischen HTTP-Request und Redirect kann ein Angreifer im gleichen Netzwerk (Café-WLAN, Flughafen, Hotel) die Verbindung kapern. Man-in-the-Middle, Cookie-Diebstahl, Session-Hijacking — alles trivial.

Mit HSTS: Der Browser weiß bereits, dass diese Domain nur HTTPS akzeptiert. Er verbindet sich direkt verschlüsselt. Kein HTTP-Request, kein Redirect, kein Angriffsfenster.

Ein Header. Eine Zeile. Und 72,4% der europäischen Websites haben ihn nicht.


Was die Daten zeigen

Aus dem SiteGuardian Benchmark mit über 700.000 europäischen Websites:

  • 27,6% haben HSTS aktiviert
  • 75,7% leiten auf HTTPS um — aber ohne HSTS ist der Redirect angreifbar
  • 24,3% leiten nicht einmal um, obwohl ein gültiges Zertifikat vorhanden ist

Das heißt: drei von vier Websites mit TLS-Zertifikat nutzen es nicht konsequent. Das Zertifikat ist da, der Schutz nicht.


Was ist HSTS genau?

HTTP Strict Transport Security (RFC 6797) ist ein HTTP-Response-Header, der dem Browser sagt:

„Verbinde dich mit dieser Domain für die nächsten X Sekunden ausschließlich über HTTPS. Ignoriere HTTP komplett."

Der Header sieht so aus:

Strict-Transport-Security: max-age=31536000; includeSubDomains
  • max-age=31536000 — 1 Jahr (in Sekunden). Der Browser merkt sich die Anweisung so lange.
  • includeSubDomains — gilt auch für alle Subdomains (api.ihre-domain.de, mail.ihre-domain.de, etc.)

Nach dem ersten Besuch verbindet sich der Browser bei jedem weiteren Aufruf direkt über HTTPS — ohne den Umweg über HTTP.


So aktivieren Sie HSTS

Apache (.htaccess oder vhost.conf)

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Voraussetzung: mod_headers muss aktiviert sein.

Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Das always am Ende stellt sicher, dass der Header auch bei Fehlerseiten (4xx, 5xx) gesetzt wird.

Caddy

Caddy setzt HSTS automatisch wenn HTTPS aktiv ist. Nichts zu tun.

Node.js / Express

app.use((req, res, next) => {
  res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
  next();
});

Oder mit dem helmet Package:

const helmet = require('helmet');
app.use(helmet.hsts({ maxAge: 31536000, includeSubDomains: true }));

WordPress

Plugin „Really Simple SSL" oder „HTTP Headers" aktiviert HSTS mit einem Klick. Alternativ in der .htaccess (siehe Apache oben).

Managed Hosting (Strato, IONOS, all-inkl, etc.)

Die meisten Hosting-Provider setzen HSTS nicht standardmäßig. Prüfen Sie in der Weboberfläche unter „SSL/TLS-Einstellungen" oder „HTTP-Header". Falls nicht vorhanden: .htaccess im Webroot anlegen.


Drei Fehler, die Sie vermeiden sollten

1. max-age zu kurz setzen

max-age=86400 (1 Tag) schützt nur Nutzer, die innerhalb der letzten 24 Stunden auf der Seite waren. Starten Sie mit 30 Tagen (2592000), eskalieren Sie auf 1 Jahr (31536000) wenn alles funktioniert.

2. includeSubDomains vergessen

Ohne includeSubDomains sind Ihre Subdomains weiterhin über HTTP erreichbar. Wenn mail.ihre-domain.de oder intranet.ihre-domain.de kein TLS haben, setzen Sie includeSubDomains erst, wenn alle Subdomains HTTPS können — sonst brechen sie.

3. HSTS ohne funktionierenden HTTPS-Redirect

HSTS setzt voraus, dass Ihre Website tatsächlich über HTTPS erreichbar ist. Testen Sie vor der Aktivierung: Rufen Sie https://ihre-domain.de auf. Kommt eine Fehlermeldung, müssen Sie zuerst das TLS-Zertifikat richtig konfigurieren.


HSTS Preload: Der nächste Schritt

Wenn HSTS läuft und Sie sicher sind, dass alle Subdomains HTTPS können, beantragen Sie die Aufnahme in die HSTS-Preload-Liste:

  1. Setzen Sie den Header auf: max-age=31536000; includeSubDomains; preload
  2. Reichen Sie Ihre Domain ein unter: hstspreload.org

Die Preload-Liste ist in Chrome, Firefox, Safari und Edge eingebaut. Domains auf der Liste werden immer über HTTPS aufgerufen — auch beim allerersten Besuch, bevor der Browser den HSTS-Header je gesehen hat.


Wie NIS2 und DSGVO das einordnen

HSTS ist in keinem Gesetz namentlich erwähnt. Aber:

  • NIS2 Art. 21(2)(d) verlangt „Sicherheit bei Erwerb, Entwicklung und Wartung von Netz- und Informationssystemen, einschließlich Umgang mit und Offenlegung von Schwachstellen". Ein fehlender HSTS-Header ist eine bekannte, trivial ausnutzbare Schwachstelle.

  • DSGVO Art. 32 verlangt „geeignete technische Maßnahmen" zum Schutz personenbezogener Daten. Transportverschlüsselung ohne HSTS ist wie ein Schloss ohne Riegel — es sieht geschlossen aus, ist aber mit einem Handgriff zu öffnen.


Prüfen Sie Ihre Domain

Aktivieren Sie HSTS, warten Sie 5 Minuten, und scannen Sie Ihre Domain:

https://siteguardian.io/scan

Der Scan zeigt Ihnen sofort, ob HSTS korrekt gesetzt ist, ob includeSubDomains aktiv ist, und ob Ihre Domain für die Preload-Liste qualifiziert ist.


Nächste Woche in Teil 2: DMARC — von none zu reject. Warum policy=none niemanden schützt, und wie Sie in drei Schritten zu einer wirksamen DMARC-Policy kommen.

Dieser Artikel ist Teil der Serie „EU Web Security: In 10 Schritten zum besseren Rating". Die Daten stammen aus dem SiteGuardian EU Web Security Benchmark mit über 700.000 bewerteten Websites.

How does your website compare?

SiteGuardian scans your domain across six security dimensions — free, instant, no registration.

Scan your website

EU Web Security: In 10 Schritten zum besseren Rating

This article is part of a weekly series on EU web security best practices.

SiteGuardian

2026-04-13

RSS