logging: hash query parameter values in QueryFilter (#7884)
Some checks failed
Tests / test (./cmd/caddy/caddy, ~1.26.0, macos-14, 0, 1.26, mac) (push) Has been cancelled
Tests / test (./cmd/caddy/caddy, ~1.26.0, ubuntu-latest, 0, 1.26, linux) (push) Has been cancelled
Tests / test (./cmd/caddy/caddy.exe, ~1.26.0, windows-latest, True, 1.26, windows) (push) Has been cancelled
Tests / test (s390x on IBM Z) (push) Has been cancelled
Tests / goreleaser-check (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, aix) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, darwin) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, dragonfly) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, freebsd) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, illumos) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, linux) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, netbsd) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, openbsd) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, solaris) (push) Has been cancelled
Cross-Build / build (~1.26.0, 1.26, windows) (push) Has been cancelled
Lint / lint (push) Has been cancelled
Lint / lint-1 (push) Has been cancelled
Lint / lint-2 (push) Has been cancelled
Lint / govulncheck (push) Has been cancelled
Lint / dependency-review (push) Has been cancelled
OpenSSF Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled

This commit is contained in:
Pichu Chen 2026-07-16 00:38:58 +08:00 committed by GitHub
parent 873fac5fc0
commit 986753a7c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 6 additions and 6 deletions

View file

@ -421,7 +421,7 @@ func (m QueryFilter) processQueryString(s string) string {
case hashAction:
for i := range q[a.Parameter] {
q[a.Parameter][i] = hash(a.Value)
q[a.Parameter][i] = hash(q[a.Parameter][i])
}
case deleteAction:

View file

@ -100,7 +100,7 @@ func TestQueryFilterSingleValue(t *testing.T) {
}
out := f.Filter(zapcore.Field{String: "/path?foo=a&foo=b&bar=c&bar=d&baz=e&hash=hashed"})
if out.String != "/path?baz=e&foo=REDACTED&foo=REDACTED&hash=e3b0c442" {
if out.String != "/path?baz=e&foo=REDACTED&foo=REDACTED&hash=1a06df82" {
t.Fatalf("query parameters have not been filtered: %s", out.String)
}
}
@ -121,16 +121,16 @@ func TestQueryFilterMultiValue(t *testing.T) {
}
out := f.Filter(zapcore.Field{Interface: internal.LoggableStringArray{
"/path1?foo=a&foo=b&bar=c&bar=d&baz=e&hash=hashed",
"/path2?foo=c&foo=d&bar=e&bar=f&baz=g&hash=hashed",
"/path1?foo=a&foo=b&bar=c&bar=d&baz=e&hash=alpha",
"/path2?foo=c&foo=d&bar=e&bar=f&baz=g&hash=beta",
}})
arr, ok := out.Interface.(internal.LoggableStringArray)
if !ok {
t.Fatalf("field is wrong type: %T", out.Interface)
}
expected1 := "/path1?baz=e&foo=REDACTED&foo=REDACTED&hash=e3b0c442"
expected2 := "/path2?baz=g&foo=REDACTED&foo=REDACTED&hash=e3b0c442"
expected1 := "/path1?baz=e&foo=REDACTED&foo=REDACTED&hash=8ed3f6ad"
expected2 := "/path2?baz=g&foo=REDACTED&foo=REDACTED&hash=f44e64e7"
if arr[0] != expected1 {
t.Fatalf("query parameters in entry 0 have not been filtered correctly: got %s, expected %s", arr[0], expected1)
}