Sichere Cookies in Spring Boot
Session-Cookie-Attribute in application.yml und CookieSerializer konfigurieren -- Secure, HttpOnly und SameSite für JSESSIONID.
Sichere Cookies in Spring Boot
Sichere Cookie-Konfiguration schuetzt Session-Daten vor Diebstahl und Manipulation. In Spring Boot steuern Sie Cookie-Attribute über application.yml und den CookieSerializer. Cookies sind mit 15 von 166 Punkten relevant im Wolf-Agents Web Security Check.
Spring Boot setzt standardmaessig ein JSESSIONID-Cookie mit HttpOnly, aber ohne Secure und ohne SameSite. Für Produktion müssen Sie diese Attribute explizit konfigurieren -- entweder per application.yml oder per DefaultCookieSerializer-Bean.
Session-Cookie Attribute setzen
Konfigurieren Sie JSESSIONID mit Secure, HttpOnly und SameSite in application.yml oder per CookieSerializer Bean für maximale Kontrolle über alle Cookie-Attribute. Der CookieSerializer-Bean hat Vorrang vor der YAML-Konfiguration.
// application.yml -- Session-Cookie konfigurieren
server:
servlet:
session:
cookie:
secure: true
http-only: true
same-site: Lax
max-age: 3600
name: JSESSIONID
// Alternativ: CookieSerializer Bean
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer serializer =
new DefaultCookieSerializer();
serializer.setCookieName("JSESSIONID");
serializer.setUseSecureCookie(true);
serializer.setUseHttpOnlyCookie(true);
serializer.setSameSite("Lax");
serializer.setCookiePath("/");
return serializer;
}Wenn sowohl application.yml als auch ein CookieSerializer-Bean Cookie-Attribute setzen, gewinnt der Bean. Verwenden Sie nur einen der beiden Wege -- nicht beide gleichzeitig.
Verifizierung der Cookie-Attribute
Prüfen Sie den Set-Cookie-Header mit curl. Alle drei Attribute (Secure, HttpOnly, SameSite) müssen in der Response sichtbar sein. Ohne Secure wird das Cookie auch über unverschluesselte HTTP-Verbindungen gesendet.
# Cookie-Header pruefen
curl -sI -c - https://ihre-domain.de | grep -i set-cookie
# Erwartete Ausgabe:
set-cookie: JSESSIONID=abc123; Path=/; Secure; HttpOnly; SameSite=LaxErweiterte Cookie-Sicherheit
Für zusaetzliche Sicherheit verwenden Sie Cookie-Prefixes (__Host- oder __Secure-) und reduzieren die Cookie-Lebensdauer auf das Minimum. __Host--Prefixed Cookies müssen Secure sein, duerfen keinen Domain-Attribut haben und der Path muss / sein.
Lax als sicheren Standard.Häufige Fehler bei Cookies in Spring Boot
Secure-Flag fehlt auf localhost
Das Secure-Flag verhindert Cookie-Übertragung über HTTP. Auf localhost ohne TLS wird das Cookie nicht gesetzt. Verwenden Sie server.servlet.session.cookie.secure=false in application-dev.yml und true in application-prod.yml.
SameSite=Strict bricht OAuth-Login
SameSite=Strict verhindert Cookie-Übertragung bei Cross-Origin-Redirects. OAuth2-Login-Flows (z.B. mit Keycloak oder Google) benoetigen mindestens SameSite=Lax, damit das Session-Cookie nach dem Redirect zurück zur Anwendung mitgesendet wird.
CookieSerializer und application.yml kollidieren
Wenn sowohl application.yml als auch ein CookieSerializer-Bean Cookie-Attribute setzen, gewinnt der Bean. Verwenden Sie nur einen der beiden Wege -- nicht beide gleichzeitig, da das zu unerwarteten Ergebnissen fuehrt.
Compliance-Relevanz
Sichere Cookie-Konfiguration erfuellt Anforderungen mehrerer Compliance-Frameworks.
Wie steht Ihre Domain bei Sichere Cookies?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.