Cookie-Sicherheit für Express.js konfigurieren
Schritt-für-Schritt-Anleitung: Secure, HttpOnly und SameSite in Express.js einrichten — mit express-session, globaler Cookie-Middleware und fertigen Code-Snippets zum Kopieren.
Wie steht Ihre Domain bei Cookie-Sicherheit?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Setzt helmet.js Cookie-Flags in Express automatisch?
Nein. helmet.js setzt viele HTTP-Security-Header (CSP, HSTS, X-Frame-Options), aber keine Cookie-Flags. Secure, HttpOnly und SameSite müssen Sie manuell in express-session oder in Ihrer Cookie-Middleware konfigurieren. Helmet und sichere Cookie-Konfiguration ergänzen sich — beides ist nötig.
Was ist der Unterschied zwischen express-session und manuell gesetzten Cookies?
express-session verwaltet Session-Daten serverseitig und setzt nur ein Session-ID-Cookie im Browser. Manuell gesetzte Cookies (res.cookie()) enthalten dagegen direkt Daten. Für beide gilt: Secure, HttpOnly und SameSite müssen explizit gesetzt werden. express-session hat dafür das cookie-Objekt in der Konfiguration, manuelle Cookies nutzen den Options-Parameter von res.cookie().
Was bedeutet trust proxy und wann brauche ich es?
Wenn Express hinter einem Reverse Proxy (Nginx, Traefik, AWS ALB) läuft, muss app.set('trust proxy', 1) gesetzt werden. Andernfalls erkennt Express keine HTTPS-Verbindung und das Secure-Flag wird nicht gesetzt — auch wenn der Client über HTTPS kommuniziert. Ohne trust proxy bleibt das Secure-Flag im Production-Betrieb wirkungslos.
Wie setze ich Cookie-Flags in Express.js?
In express-session setzen Sie die Flags im cookie-Objekt: { secure: true, httpOnly: true, sameSite: 'strict' }. Für einzelne Cookies nutzen Sie res.cookie('name', 'wert', { secure: true, httpOnly: true, sameSite: 'strict' }). Eine globale Middleware überschreibt res.cookie(), um die Flags automatisch für alle Cookies zu setzen.
Wie verhindere ich, dass das Secure-Flag im Development die Entwicklung blockiert?
Setzen Sie secure: process.env.NODE_ENV === 'production'. Damit ist das Secure-Flag nur im Production-Modus aktiv — im Development können Sie HTTP nutzen. Alternativ nutzen Sie mkcert für lokale HTTPS-Zertifikate, um Production-nah zu entwickeln.
Was ist der __Host- Prefix und wie nutze ich ihn in Express?
Der __Host- Prefix (z.B. __Host-session) ist der stärkste Cookie-Schutz: Der Browser erzwingt Secure, Path=/ und verhindert das Domain-Attribut. In Express setzen Sie den Prefix im Cookie-Namen: res.cookie('__Host-session', value, { secure: true, path: '/' }). Wichtig: Das domain-Attribut darf NICHT gesetzt sein.
Brauche ich cookie-parser, wenn ich express-session nutze?
Nicht zwingend. express-session verarbeitet das Session-Cookie selbst. cookie-parser ist nötig, wenn Sie andere Cookies aus req.cookies lesen wollen. Für die globale Cookie-Middleware (Überschreiben von res.cookie()) ist cookie-parser sinnvoll, aber technisch optional — die Middleware arbeitet auf Response-Ebene.