
# Redact Supprime le contenu de type identifiant des chaînes de caractères libres avant qu’il n’atteigne les journaux ou la télémétrie. Fait partie de la boîte à outils Go phpboyscout. · https://redact.go.phpboyscout.uk
Supprime le contenu de type identifiant d'chaînes de caractères libres avant qu'elles n'atteignent les journaux, la télémétrie ou toute surface tierce
Partie de la phpboyscout Go toolkit : petits modules Go sans framework extraits de go-tool-base. Docs : redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact supprime le contenu de type identifiant d'chaînes de caractères libres à la frontière entre les surfaces d'observabilité de confiance et non fiables, telles que les fournisseurs de télémétrie, les agrégateurs de journaux et les stockages de métriques. Les messages d'erreur, les arguments de commande et les valeurs d'en-tête HTTP transportent régulièrement des secrets par accident (une URL avec des informations d'utilisateur intégrées, un indicateur --api-key=sk-… dans os.Args, un en-tête Authorization cité dans une erreur d'export). Faites-les passer par redact.String au moment de la sortie et ils ne quittent jamais le processus en clair.
regexp, strings), donc rien d'autre que le module n'entre dans votre graphe. Un garde depfootprint_test.go l'impose, et limite les tests à testify et au go/errors du domaine.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 supprime les informations d'utilisateur d'URL pour tout schéma (https://, postgres://, redis://, …), les affectations name=value d'identifiants, les champs d'identifiants JSON 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 jetons opaques longs. SensitiveHeaderKeys / IsSensitiveHeaderKey identifient les en-têtes dont les valeurs doivent être rédigées.
Les catalogues de motifs n'atteignent jamais 100 % de rappel, et celui-ci est délibérément conservateur :
String ne masque pas les valeurs d'en-tête arbitraires. Il connaît Authorization: et rien d'autre ; X-API-Key: … passe à travers. C'est à cela que servent les symboles d'en-tête.Ce que redact ne fait pas énonce la frontière complète.
Guides complets, référence et modèle de menace : redact.go.phpboyscout.uk. Docs API générées et exemples exécutables : pkg.go.dev.
Voir LICENSE.