From 6215e1ac01c03866f8b2e89ac084ddd6a3c3ac9e Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Sun, 7 Sep 2025 20:45:06 +0200 Subject: [PATCH] feat: add CSP header (#908) Co-authored-by: Alessandro (Ale) Segala <43508+ItalyPaleAle@users.noreply.github.com> --- backend/frontend/frontend_included.go | 80 +++++++++++++- .../internal/bootstrap/router_bootstrap.go | 2 + .../internal/bootstrap/services_bootstrap.go | 3 + .../internal/controller/version_controller.go | 40 +++++++ backend/internal/middleware/csp_middleware.go | 53 ++++++++++ backend/internal/service/version_service.go | 74 +++++++++++++ backend/internal/utils/cache_util.go | 78 ++++++++++++++ frontend/src/lib/services/version-service.ts | 100 ++---------------- frontend/src/routes/settings/+layout.ts | 15 ++- 9 files changed, 343 insertions(+), 102 deletions(-) create mode 100644 backend/internal/controller/version_controller.go create mode 100644 backend/internal/middleware/csp_middleware.go create mode 100644 backend/internal/service/version_service.go create mode 100644 backend/internal/utils/cache_util.go diff --git a/backend/frontend/frontend_included.go b/backend/frontend/frontend_included.go index 1848c4e4..064ab8d4 100644 --- a/backend/frontend/frontend_included.go +++ b/backend/frontend/frontend_included.go @@ -3,8 +3,10 @@ package frontend import ( + "bytes" "embed" "fmt" + "io" "io/fs" "net/http" "os" @@ -12,11 +14,55 @@ import ( "time" "github.com/gin-gonic/gin" + "github.com/pocket-id/pocket-id/backend/internal/middleware" ) //go:embed all:dist/* var frontendFS embed.FS +// This function, created by the init() method, writes to "w" the index.html page, populating the nonce +var writeIndexFn func(w io.Writer, nonce string) error + +func init() { + const scriptTag = "