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.
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.
HSTS-Header setzen
Wählen Sie zwischen Helmet (empfohlen, setzt zusätzliche Security Headers) und einer manuellen Middleware (minimaler Footprint, keine Abhängigkeit).
const helmet = require('helmet');
app.use(helmet.hsts({
maxAge: 31536000,
includeSubDomains: true,
preload: true
})); app.use((req, res, next) => {
res.set(
'Strict-Transport-Security',
'max-age=31536000; includeSubDomains; preload'
);
next();
}); 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.
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.
# 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 app.use(). So wird der Header auf allen Responses gesetzt — inklusive statischer Dateien und API-Endpoints. 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.
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().