Sicherheit: HTTP-Security-Header und Origin-Prüfung für schreibende Routen
- X-Frame-Options/CSP frame-ancestors gegen Clickjacking, nosniff, Referrer-Policy, Permissions-Policy - Origin-Check als CSRF-Defense-in-Depth für /api/admin/users und /logout (zusätzlich zu SameSite=Lax-Cookies und JSON-Content-Type)
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
// CSRF-Schutz (Defense-in-Depth) für schreibende Route-Handler:
|
||||
// Browser senden bei Cross-Site-POSTs immer einen Origin-Header –
|
||||
// stimmt er nicht mit dem Host überein, wird die Anfrage abgelehnt.
|
||||
// (Erste Verteidigungslinie sind bereits die SameSite=Lax-Session-
|
||||
// Cookies von @supabase/ssr sowie der JSON-Content-Type.)
|
||||
export function isSameOrigin(request: Request): boolean {
|
||||
const origin = request.headers.get("origin");
|
||||
// Kein Origin-Header: kein Browser-Cross-Site-Kontext (z. B. curl);
|
||||
// die Authentifizierung greift trotzdem.
|
||||
if (!origin) return true;
|
||||
const host = request.headers.get("host");
|
||||
try {
|
||||
return new URL(origin).host === host;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user