From be180b3e58e01ff6a64267611a698d0d36fd9d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Tue, 16 Jun 2026 03:37:01 +0200 Subject: [PATCH] Bezbednost: _next whitelist umesto url.Parse (CodeQL taint analiza) --- internal/handler/podesavanja.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/handler/podesavanja.go b/internal/handler/podesavanja.go index d5985c4..185cb37 100644 --- a/internal/handler/podesavanja.go +++ b/internal/handler/podesavanja.go @@ -7,7 +7,6 @@ import ( "io" "log/slog" "net/http" - "net/url" "os" "path/filepath" "regexp" @@ -264,13 +263,14 @@ func (h *Handler) SacuvajPodesavanja(w http.ResponseWriter, r *http.Request) { } } + // whitelist dozvoljenih redirekcija — vrednost uvek dolazi iz mape, nikad od korisnika + dozvoljeniSledeci := map[string]string{ + "/admin/podesavanja/opste": "/admin/podesavanja/opste", + "/podesavanja": "/podesavanja", + } sledeci := "/podesavanja" - if next := r.FormValue("_next"); next != "" { - if u, err := url.Parse(next); err == nil && u.Host == "" && u.Scheme == "" { - if p := u.RequestURI(); p != "" { - sledeci = p - } - } + if v, ok := dozvoljeniSledeci[r.FormValue("_next")]; ok { + sledeci = v } // backup podešavanja — pri neispravnom unosu javljamo jasnu grešku