fix: redact token query logs
This commit is contained in:
@@ -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, "&")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user