Bezbednost: _next whitelist umesto url.Parse (CodeQL taint analiza)

This commit is contained in:
2026-06-16 03:37:01 +02:00
parent 532f95848c
commit be180b3e58
+7 -7
View File
@@ -7,7 +7,6 @@ import (
"io" "io"
"log/slog" "log/slog"
"net/http" "net/http"
"net/url"
"os" "os"
"path/filepath" "path/filepath"
"regexp" "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" sledeci := "/podesavanja"
if next := r.FormValue("_next"); next != "" { if v, ok := dozvoljeniSledeci[r.FormValue("_next")]; ok {
if u, err := url.Parse(next); err == nil && u.Host == "" && u.Scheme == "" { sledeci = v
if p := u.RequestURI(); p != "" {
sledeci = p
}
}
} }
// backup podešavanja — pri neispravnom unosu javljamo jasnu grešku // backup podešavanja — pri neispravnom unosu javljamo jasnu grešku