
Strip credential-like content from free-form strings before they reach logs or telemetry. Part of the phpboyscout Go toolkit. · https://redact.go.phpboyscout.uk
Entferne zugangsdatenähnliche Inhalte aus Freitext-Strings, bevor sie Logs, Telemetrie oder eine beliebige Drittanbieter-Oberfläche erreichen
Teil des phpboyscout Go toolkit — kleine, framework-freie Go-Module, extrahiert aus go-tool-base. Dokumentation: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact schwärzt zugangsdatenähnliche Inhalte aus Freitext-Strings an der Grenze zwischen vertrauenswürdigen und nicht vertrauenswürdigen Observability-Oberflächen — Telemetrie-Anbietern, Log-Aggregatoren, Metrikspeichern. Fehlermeldungen, Befehlsargumente und HTTP-Header-Werte tragen regelmäßig versehentlich Geheimnisse mit sich (eine URL mit eingebettetem Userinfo, ein --api-key=sk-…-Flag in os.Args, ein in einem Exportfehler zitierter Authorization-Header). Leiten Sie diese auf dem Weg nach außen durch redact.String, und sie verlassen den Prozess nie im Klartext.
regexp, strings) — nichts außer dem Modul gelangt in Ihren Graphen. Ein depfootprint_test.go-Guard erzwingt das.go get gitlab.com/phpboyscout/go/redact
import "gitlab.com/phpboyscout/go/redact"
safe := redact.String("failed calling https://user:[email protected]?api_key=sk-abc123…")
// → credentials in the URL userinfo, the api_key query param, and the sk- token are masked
msg := redact.Error(err) // redact.String applied to err.Error() (nil-safe)
if redact.IsSensitiveHeaderKey("Authorization") { /* … redact this header's value … */ }
redact.String maskiert URL-Userinfo für jedes Schema (https://, postgres://, redis://, …), name=value-Zuweisungen von Zugangsdaten, JSON-Zugangsdatenfelder wie "access_token" und "client_secret", Authorization-Header-Token, JWTs, bekannte Provider-Präfixe (sk-, ghp_, glpat-, AIza, AKIA, Slack) und lange opake Token. SensitiveHeaderKeys / IsSensitiveHeaderKey identifizieren Header, deren Werte geschwärzt werden sollten.
Musterkataloge erreichen nie 100 % Trefferquote, und dieser ist bewusst konservativ gehalten:
String maskiert keine beliebigen Header-Werte. Bekannt ist nur Authorization: und sonst nichts; X-API-Key: … geht durch. Genau dafür sind die Header-Symbole da.Was redact nicht tut beschreibt die vollständige Grenze.
Ausführliche Anleitungen, Referenz und Bedrohungsmodell: redact.go.phpboyscout.uk. Generierte API-Dokumentation und ausführbare Beispiele: pkg.go.dev.
Siehe LICENSE.