
Biblioteca Go sem dependências que remove padrões semelhantes a credenciais (chaves de API, JWTs, cabeçalhos Authorization, userinfo de URL) antes que cheguem a logs/telemetria.
Remova conteúdo semelhante a credenciais de strings de formato livre antes que elas cheguem a logs, telemetria ou qualquer superfície de terceiros
Parte do phpboyscout Go toolkit — módulos Go pequenos e sem framework, extraídos de go-tool-base. Documentação: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact redige conteúdo semelhante a credenciais de strings de formato livre
na fronteira entre superfícies de observabilidade confiáveis e não confiáveis —
fornecedores de telemetria, agregadores de logs, armazenamentos de métricas. Mensagens de erro, argumentos
de comando e valores de cabeçalhos HTTP transportam segredos por acidente com frequência (uma URL com
userinfo embutido, uma flag em , um cabeçalho
citado em um erro de exportação). Direcione-os por na saída
e eles nunca deixarão o processo em texto puro.
--api-key=sk-…os.ArgsAuthorizationredact.Stringregexp, strings) — nada além do módulo entra no seu grafo. Um teste de guarda depfootprint_test.go o garante.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 remove o userinfo da URL para qualquer esquema (https://, postgres://,
redis://, …), atribuições de credenciais name=value, campos de credenciais JSON como
"access_token" e "client_secret", tokens de cabeçalho Authorization, JWTs,
prefixos de provedores bem conhecidos (sk-, ghp_, glpat-, AIza, AKIA, Slack)
e tokens opacos longos. SensitiveHeaderKeys / IsSensitiveHeaderKey identificam
cabeçalhos cujos valores devem ser redigidos.
Catálogos de padrões nunca alcançam 100% de recall, e este é deliberadamente conservador:
String não mascara valores de cabeçalho arbitrários. Ele conhece Authorization: e nada mais; X-API-Key: … passa direto. É para isso que servem os símbolos de cabeçalho.O que o redact não faz declara a fronteira completa.
Guias completos, referência e modelo de ameaça: redact.go.phpboyscout.uk. Documentação de API gerada e exemplos executáveis: pkg.go.dev.
Veja LICENSE.