
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
Supprime les contenus ressemblant à des identifiants de chaînes libres avant qu’ils n’atteignent les journaux, la télémétrie ou toute surface tierce
Fait partie de la boîte à outils Go phpboyscout — de petits modules Go sans framework, extraits de go-tool-base. Documentation : redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact masque les contenus ressemblant à des identifiants dans les chaînes libres à la frontière entre les surfaces d’observabilité de confiance et celles qui ne le sont pas —
fournisseurs de télémétrie, agrégateurs de journaux, magasins de métriques. Les messages d’erreur, les
arguments de commande et les valeurs d’en-têtes HTTP transportent couramment des secrets par accident (une URL avec
userinfo intégré, un indicateur --api-key=sk-… dans os.Args, un en-tête Authorization
cité dans une erreur d’exportation). Passez-les par redact.String à la sortie
et ils ne quittent jamais le processus en clair.
regexp, strings) — rien d’autre que
le module n’entre dans votre graphe. Un garde-fou depfootprint_test.go le fait respecter.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…")
// → les identifiants dans le userinfo de l’URL, le paramètre de requête api_key et le jeton sk- sont masqués
msg := redact.Error(err) // redact.String appliqué à err.Error() (sans risque si nil)
if redact.IsSensitiveHeaderKey("Authorization") { /* … masquer la valeur de cet en-tête … */ }
redact.String supprime le userinfo des URL pour tout schéma (https://,
postgres://, redis://, …), les affectations d’identifiants name=value, les champs
JSON d’identifiants tels que "access_token" et "client_secret", les jetons d’en-tête Authorization,
les JWT, les préfixes de fournisseurs bien connus (sk-, ghp_, glpat-, AIza, AKIA, Slack),
et les longs jetons opaques. SensitiveHeaderKeys / IsSensitiveHeaderKey identifient
les en-têtes dont les valeurs doivent être masquées.
Les catalogues de motifs n’atteignent jamais 100 % de rappel, et celui-ci est délibérément prudent :
String ne masque pas les valeurs d’en-têtes arbitraires. Il connaît Authorization:
et rien d’autre ; X-API-Key: … passe au travers. C’est à cela que servent les symboles
d’en-têtes.Ce que redact ne fait pas définit la frontière complète.
Guides complets, référence et modèle de menace : redact.go.phpboyscout.uk. Documentation API générée et exemples exécutables : pkg.go.dev.
Voir LICENSE.