Sichere Cookies für Astro konfigurieren
Schritt-für-Schritt-Anleitung: Cookie-Attribute in Astro korrekt setzen -- mit Astro.cookies API, Better Auth Integration und Sicherheits-Best-Practices.
Sichere Cookies in Astro
Sichere Cookie-Konfiguration schützt Session-Daten vor Diebstahl und Manipulation. Die drei wichtigsten Attribute sind Secure (nur HTTPS), HttpOnly (kein JavaScript-Zugriff) und SameSite (CSRF-Schutz). Cookies sind mit 15 von 166 Punkten ein wichtiger Faktor im Wolf-Agents Web Security Check.
Astro bietet die Astro.cookies API für serverseitige Cookie-Operationen. Im SSR-Modus setzen Sie Cookies in API-Routes, Middleware oder direkt in .astro-Seiten. Wolf-Agents nutzt Astro mit Better Auth und setzt alle Session-Cookies mit Secure, HttpOnly und SameSite=Lax.
Cookie-Optionen in API-Routes
Verwenden Sie Astro.cookies.set() mit allen Sicherheitsattributen. In API-Routes steht cookies direkt im Context-Objekt zur Verfügung. Setzen Sie immer httpOnly: true für Session-Cookies.
// src/pages/api/login.ts -- Sichere Cookies setzen
import type { APIRoute } from 'astro';
export const POST: APIRoute = async ({ cookies, request }) => {
// ... Auth-Logik ...
cookies.set('session_token', sessionId, {
httpOnly: true, // Kein JavaScript-Zugriff
secure: true, // Nur über HTTPS
sameSite: 'lax', // CSRF-Schutz
path: '/', // Gilt für gesamte Domain
maxAge: 60 * 60 * 24 * 7, // 7 Tage
});
return new Response('OK', { status: 200 });
}; Auth-Library-Integration
Wenn Sie eine Auth-Library wie Better Auth verwenden, konfigurieren Sie Cookie-Attribute in der Library-Konfiguration. Die Library setzt Set-Cookie-Header automatisch -- stellen Sie sicher, dass useSecureCookies aktiviert ist.
// auth.ts -- Better Auth Cookie-Konfiguration
import { betterAuth } from 'better-auth';
export const auth = betterAuth({
advanced: {
useSecureCookies: true, // Secure + HttpOnly
},
cookies: {
session_token: {
attributes: {
sameSite: 'lax',
secure: true,
httpOnly: true,
},
},
},
}); // src/middleware.ts -- Cookie-Header per Middleware
import { defineMiddleware } from 'astro:middleware';
export const onRequest = defineMiddleware(async (context, next) => {
const response = await next();
// Cookie-Header mit Set-Cookie ergänzen ist nicht nötig --
// Astro.cookies.set() setzt automatisch korrekte Set-Cookie-Header.
// Stattdessen: Cookie-Sicherheits-Header setzen
response.headers.set('X-Content-Type-Options', 'nosniff');
return response;
}); Cookies verifizieren
Prüfen Sie die Cookie-Attribute im Browser (DevTools > Application > Cookies) und per curl. Alle Session-Cookies müssen Secure, HttpOnly und SameSite gesetzt haben.
# Cookie-Attribute prüfen
curl -sI -X POST https://ihre-domain.de/api/login \
-H "Content-Type: application/json" \
-d '{"email":"test@test.de","password":"..."}' | grep -i set-cookie
# Erwartete Ausgabe:
# Set-Cookie: session_token=abc123; Path=/; HttpOnly; Secure; SameSite=Lax; Max-Age=604800 Häufige Fehler bei Cookies in Astro
HttpOnly fehlt bei Session-Cookies
Ohne httpOnly: true kann JavaScript auf Session-Cookies zugreifen. Ein XSS-Angriff kann den Cookie stehlen und die Session uebernehmen.
SameSite=None ohne Secure
Browser ignorieren SameSite=None ohne Secure. Verwenden Sie SameSite=Lax als Standard -- None nur für Cross-Site-Szenarien mit HTTPS.
Cookies im SSG-Modus setzen
Astro.cookies funktioniert nur im SSR-Modus. Im SSG-Modus gibt es keinen Server -- Cookies müssen client-seitig per document.cookie gesetzt werden (ohne HttpOnly).
Compliance-Relevanz
Sichere Cookie-Konfiguration ist eine Grundanforderung für NIS2 und PCI DSS 4.0. Session-Cookies ohne Secure und HttpOnly sind ein direktes Sicherheitsrisiko. Der Wolf-Agents Web Security Check bewertet Cookie-Attribute mit bis zu 15 Punkten.
Wie steht Ihre Domain bei Sichere Cookies?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.