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.

Astro · Schritt für Schritt

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.

1 Schritt 1 von 3

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 Empfohlen
// 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 });
};
2 Schritt 2 von 3

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.

src/lib/auth.ts Better Auth
// 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 Middleware
// 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;
});
3 Schritt 3 von 3

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.

Terminal Verifizieren
# 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.