fix: redact token query logs
This commit is contained in:
@@ -3,6 +3,7 @@ package server
|
|||||||
import (
|
import (
|
||||||
"mal/internal/observability"
|
"mal/internal/observability"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -46,7 +47,7 @@ func RequestLogger() gin.HandlerFunc {
|
|||||||
fields["route"] = route
|
fields["route"] = route
|
||||||
}
|
}
|
||||||
if query != "" {
|
if query != "" {
|
||||||
fields["query"] = query
|
fields["query"] = redactSensitiveQuery(query)
|
||||||
}
|
}
|
||||||
if size := c.Writer.Size(); size >= 0 {
|
if size := c.Writer.Size(); size >= 0 {
|
||||||
fields["bytes"] = size
|
fields["bytes"] = size
|
||||||
@@ -76,3 +77,17 @@ func requestLogLevel(status int) observability.LogLevel {
|
|||||||
}
|
}
|
||||||
return observability.LogLevelInfo
|
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