HSTS für Express.js konfigurieren

Schritt-für-Schritt-Anleitung: HSTS in Express mit Helmet oder Custom Middleware — eine Zeile Code für maximalen Schutz.

Express · Schritt für Schritt

HSTS in Express.js

Express.js bietet zwei saubere Wege für HSTS: die Security-Middleware helmet (empfohlen, setzt neben HSTS weitere Security Headers) oder eine manuelle Middleware mit res.set(). Beide Varianten sind in wenigen Minuten implementiert und schützen Ihre Anwendung vor SSL-Stripping.

Helmet ist das Standard-Security-Paket für Express-Anwendungen mit über 4 Millionen wöchentlichen Downloads. Es setzt HSTS standardmäßig mit 180 Tagen — für die Preload-Liste müssen Sie maxAge auf mindestens 31536000 (1 Jahr) erhöhen. HSTS bringt 15 von 166 Punkten im Wolf-Agents Web Security Check.

1 Schritt 1 von 3

HSTS-Header setzen

Wählen Sie zwischen Helmet (empfohlen, setzt zusätzliche Security Headers) und einer manuellen Middleware (minimaler Footprint, keine Abhängigkeit).

app.js — Mit Helmet (empfohlen) Helmet
const helmet = require('helmet');

app.use(helmet.hsts({
  maxAge: 31536000,
  includeSubDomains: true,
  preload: true
}));
app.js — Manuelle Middleware Ohne Helmet
app.use((req, res, next) => {
  res.set(
    'Strict-Transport-Security',
    'max-age=31536000; includeSubDomains; preload'
  );
  next();
});
Helmet setzt mehr als nur HSTS

helmet() (ohne Parameter) setzt 15 Security Headers gleichzeitig, darunter X-Content-Type-Options, X-Frame-Options und Referrer-Policy. Mit helmet.hsts() setzen Sie nur den HSTS-Header gezielt.

2 Schritt 2 von 3

Konfiguration testen

Testen Sie den HSTS-Header nach dem Deployment — nicht lokal, da HSTS nur über HTTPS wirksam ist. Falls Express hinter einem Reverse Proxy (Nginx, AWS ALB) läuft, prüfen Sie den Header am Edge.

Terminal Verifizieren
# HSTS-Header prüfen (nach Deployment)
curl -sI https://ihre-domain.de | grep -i strict

# Erwartete Ausgabe:
# Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Mounten Sie die HSTS-Middleware vor Ihren Route-Handlern mit app.use(). So wird der Header auf allen Responses gesetzt — inklusive statischer Dateien und API-Endpoints.
3 Schritt 3 von 3

HSTS Preload beantragen

Reichen Sie Ihre Domain auf hstspreload.org ein. Mit preload: true in Helmet oder preload in der manuellen Middleware sind alle Voraussetzungen erfüllt.

Preload ist quasi-permanent. Nur beantragen, wenn alle Subdomains dauerhaft HTTPS unterstützen.

Wie steht Ihre Domain bei HSTS?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.

Häufig gestellte Fragen

Brauche ich Helmet für HSTS in Express?

Nein — Helmet ist optional. Sie können den HSTS-Header auch mit einer einfachen Custom-Middleware setzen (res.set). Helmet ist aber empfehlenswert, weil es neben HSTS weitere Security Headers (X-Content-Type-Options, X-Frame-Options etc.) automatisch setzt.

Setzt Helmet HSTS automatisch?

Ja. Ab Helmet 4.x ist HSTS standardmäßig aktiv mit max-age=15552000 (180 Tage) und includeSubDomains=true. Für die Preload-Liste müssen Sie max-age auf mindestens 31536000 erhöhen und preload=true setzen.

Funktioniert HSTS hinter einem Reverse Proxy (Nginx, AWS ALB)?

Ja, aber der Reverse Proxy terminiert HTTPS — Express sieht nur HTTP. Helmet setzt HSTS trotzdem, unabhängig vom Protokoll. Alternativ können Sie den HSTS-Header am Reverse Proxy setzen (empfohlen für Edge-Konfiguration).

Wie unterscheidet sich die HSTS-Konfiguration in Express 4 und Express 5?

Für HSTS gibt es keinen Unterschied — die res.set()-Methode und Helmet funktionieren in beiden Versionen identisch. Express 5 ändert Routing und Error Handling, aber die Header-Konfiguration bleibt gleich.

Kann ich HSTS nur für bestimmte Routen setzen?

Technisch ja (Middleware nur auf bestimmte Routen mounten), aber nicht empfohlen. HSTS sollte für die gesamte Domain gelten — der Browser speichert den HSTS-Eintrag pro Domain, nicht pro Pfad. Setzen Sie die Middleware global mit app.use().