diff --git a/internal/server/observability.go b/internal/server/observability.go index 9e3510a3..b3475ffe 100644 --- a/internal/server/observability.go +++ b/internal/server/observability.go @@ -3,6 +3,7 @@ package server import ( "mal/internal/observability" "net/http" + "strings" "time" "github.com/gin-gonic/gin" @@ -46,7 +47,7 @@ func RequestLogger() gin.HandlerFunc { fields["route"] = route } if query != "" { - fields["query"] = query + fields["query"] = redactSensitiveQuery(query) } if size := c.Writer.Size(); size >= 0 { fields["bytes"] = size @@ -76,3 +77,17 @@ func requestLogLevel(status int) observability.LogLevel { } return observability.LogLevelInfo } + +func redactSensitiveQuery(query string) string { + parts := strings.Split(query, "&") + for i, part := range parts { + key := part + if before, _, ok := strings.Cut(part, "="); ok { + key = before + } + if strings.EqualFold(key, "token") { + parts[i] = key + "=REDACTED" + } + } + return strings.Join(parts, "&") +}