
redact v0.2.2
Libreria Go senza dipendenze che rimuove i pattern simili a credenziali (chiavi API, JWT, header Authorization, userinfo degli URL) prima che raggiungano log e telemetria.
redact
Rimuovi contenuti simili a credenziali da stringhe libere prima che raggiungano log, telemetria o qualsiasi superficie di terze parti
Parte del phpboyscout Go toolkit — moduli Go piccoli e senza framework estratti da go-tool-base. Documentazione: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact oscura contenuti simili a credenziali da stringhe libere al confine tra superfici di osservabilità attendibili e non attendibili — fornitori di telemetria, aggregatori di log, archivi di metriche. Messaggi di errore, argomenti dei comandi e valori di header HTTP trasportano regolarmente segreti per sbaglio (un URL con userinfo incorporato, un flag --api-key=sk-… in os.Args, un header Authorization citato in un errore di esportazione). Instradali attraverso redact.String al momento dell'uscita e non lasceranno mai il processo in chiaro.
Progettazione
- Zero dipendenze. Pura libreria standard (
regexp,strings) — nulla oltre al modulo entra nel tuo grafo. Un controllodepfootprint_test.golo impone. - Oscuramento al confine. Igienizza dove i dati lasciano l'host, non ovunque.
- Conservativo per impostazione predefinita. Il fallback per token opachi richiede ≥41 caratteri, così non genera mai falsi positivi su UUID, MD5 o SHA-1.
Installazione
go get gitlab.com/phpboyscout/go/redact
Utilizzo
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 rimuove lo userinfo dagli URL per qualsiasi schema (https://, postgres://, redis://, …), assegnazioni di credenziali name=value, campi JSON di credenziali come "access_token" e "client_secret", token di header Authorization, JWT, prefissi di provider noti (sk-, ghp_, glpat-, AIza, AKIA, Slack) e token opachi lunghi. SensitiveHeaderKeys / IsSensitiveHeaderKey identificano gli header i cui valori dovrebbero essere oscurati.
Limitazioni
I cataloghi di pattern non raggiungono mai una recall del 100% e questo è deliberatamente conservativo:
- Nessuna configurazione. Non puoi aggiungere, disabilitare o riordinare un pattern — il pacchetto esporta quattro simboli e niente da regolare. Componi attorno a esso, invece.
Stringnon maschera valori di header arbitrari. ConosceAuthorization:e nient'altro;X-API-Key: …passa oltre. È a questo che servono i simboli degli header.- I segreti personalizzati e brevi sfuggono. Il fallback generico richiede 41 caratteri e ogni prefisso di provider ha una lunghezza minima fissa.
- I pattern sono solo ASCII e l'oscuramento è a senso unico — niente da invertire e nessuna registrazione di ciò che è stato sostituito.
Cosa redact non fa descrive l'intero confine.
Documentazione
Guide complete, riferimento e modello di minaccia: redact.go.phpboyscout.uk. Documentazione API generata ed esempi eseguibili: pkg.go.dev.
Licenza
Vedi LICENSE.