feat(security): add CSRF protection for all state-changing API routes
Build & Push Docker Image / build (push) Successful in 2m16s

- Synchronizer token stored in session; GET /auth/csrf to obtain it
- csrfProtection middleware requires X-CSRF-Token on non-safe methods
- customFetch injects the header via setCsrfTokenGetter
- toolrate boot loads token; reload after local login (session regenerate)
- OpenAPI GET /auth/csrf + CsrfToken schema, orval regenerated
This commit is contained in:
opencode
2026-08-03 10:30:13 +02:00
parent f851305d78
commit bcae59626f
15 changed files with 209 additions and 1 deletions
+5
View File
@@ -1,7 +1,9 @@
import { Switch, Route, Router as WouterRouter } from "wouter";
import { useEffect } from "react";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { I18nextProvider } from "react-i18next";
import i18n from "@/i18n";
import { loadCsrfToken } from "@/lib/csrf";
import { Toaster } from "@/components/ui/toaster";
import { TooltipProvider } from "@/components/ui/tooltip";
@@ -50,6 +52,9 @@ function Router() {
}
function App() {
useEffect(() => {
void loadCsrfToken();
}, []);
return (
<I18nextProvider i18n={i18n}>
<QueryClientProvider client={queryClient}>