fix: reject cross-site POSTs when auth is disabled #420

Merged
dries merged 2 commits from fix/410-csrf-guard into main 2026-07-21 18:01:24 +02:00
Owner

Summary

  • apply Origin and Sec-Fetch-Site validation to all authenticated POST routes
  • preserve Origin-less local CLI access
  • add regression coverage for auth-disabled cross-site requests

Closes #410

Testing

  • go test ./...
  • go vet ./...
## Summary - apply Origin and Sec-Fetch-Site validation to all authenticated POST routes - preserve Origin-less local CLI access - add regression coverage for auth-disabled cross-site requests Closes #410 ## Testing - go test ./... - go vet ./...
fix: reject cross-site POSTs when auth is disabled
All checks were successful
CI / Build Desktop (macOS arm64) (pull_request) Successful in 1m37s
CI / Frontend (pull_request) Successful in 6m37s
CI / Backend (pull_request) Successful in 8m25s
CI / Coverage Results (pull_request) Successful in 22s
CI / Build (pull_request) Successful in 4m30s
CI / Playwright E2E (pull_request) Successful in 8m19s
CI / Semantic Tag (pull_request) Successful in 5s
cb10524a9f
Factor the browser-origin check out of isPrivilegedRequest into a
csrfSafe guard and compose it into s.post, so every mutating route
gets Origin / Sec-Fetch-Site validation regardless of auth config.
Origin-less CLI clients are unaffected. Closes #410.

Coverage ratchet: ✅ pass

Suite Baseline This PR Δ
frontend 66.41% 66.38% -0.03 ✅
go 77.60% 77.70% +0.10 ✅

Tolerance: -0.1%. Baseline stored on gh-pages.

<!-- coverage-ratchet --> ### Coverage ratchet: ✅ pass | Suite | Baseline | This PR | Δ | | |---|---|---|---|---| | frontend | 66.41% | 66.38% | -0.03 | ✅ | | go | 77.60% | 77.70% | +0.10 | ✅ | _Tolerance: -0.1%. Baseline stored on `gh-pages`._
fix: guard mixed-method routes from CSRF
All checks were successful
CI / Build Desktop (macOS arm64) (pull_request) Successful in 1m29s
CI / Frontend (pull_request) Successful in 7m3s
CI / Backend (pull_request) Successful in 7m49s
CI / Coverage Results (pull_request) Successful in 28s
CI / Build (pull_request) Successful in 4m4s
CI / Playwright E2E (pull_request) Successful in 7m51s
CI / Semantic Tag (pull_request) Successful in 5s
92493f5279
dries merged commit 58b379d0cd into main 2026-07-21 18:01:24 +02:00
Sign in to join this conversation.
No description provided.