Torna agli aggiornamenti
New releaseAug 25, 2026

redact v0.2.2

Rimuovi contenuti simili a credenziali da stringhe di forma libera prima che raggiungano log o telemetria. Parte del toolkit Go phpboyscout. · https://redact.go.phpboyscout.uk

Condividi

redact

Rimuove contenuti simili a credenziali da stringhe libere prima che raggiungano log, telemetria o qualsiasi superficie di terze parti

Go Reference Pipeline Coverage phpboyscout Go toolkit

Parte del phpboyscout Go toolkit: piccoli moduli Go senza framework estratti da go-tool-base. Documentazione: redact.go.phpboyscout.uk


gitlab.com/phpboyscout/go/redact rimuove contenuti simili a credenziali da stringhe libere al confine tra superfici di osservabilità attendibili e non attendibili, come fornitori di telemetria, aggregatori di log e archivi di metriche. Messaggi di errore, argomenti di comando e valori di header HTTP trasportano abitualmente segreti per errore (un URL con userinfo incorporato, un flag --api-key=sk-… in os.Args, un header Authorization citato in un errore di esportazione). Instrada questi valori attraverso redact.String in uscita e non lasceranno mai il processo in chiaro.

Design

  • Zero dipendenze. Solo libreria standard (regexp, strings), quindi nient'altro che il modulo entra nel tuo grafo. Una guardia depfootprint_test.go lo impone, e vincola i test a testify e al go/errors dell'ecosistema.
  • Redazione al confine. Sanifica dove i dati lasciano l'host, non ovunque.
  • Conservativo per impostazione predefinita. Il fallback per token opachi richiede ≥41 caratteri così non produce 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 degli URL per qualsiasi schema (https://, postgres://, redis://, …), le assegnazioni name=value di credenziali, i campi di credenziali JSON come "access_token" e "client_secret", i token dell'header Authorization, i JWT, i prefissi di provider noti (sk-, ghp_, glpat-, AIza, AKIA, Slack), e i token opachi lunghi. SensitiveHeaderKeys / IsSensitiveHeaderKey identificano gli header i cui valori dovrebbero essere redatti.

Limitazioni

I cataloghi di pattern non raggiungono mai il 100% di recall, e questo è deliberatamente conservativo:

  • Nessuna configurazione. Non puoi aggiungere, disabilitare o riordinare un pattern. Il pacchetto esporta quattro simboli e nulla da regolare. Componi attorno ad esso invece.
  • String non maschera valori di header arbitrari. Conosce Authorization: e nient'altro; X-API-Key: … passa attraverso. È per questo che esistono i simboli per gli header.
  • Segreti personalizzati e brevi sfuggono. Il fallback catch-all richiede 41 caratteri, e ogni prefisso di provider ha una lunghezza minima rigida.
  • I pattern sono solo ASCII, e la redazione è unidirezionale: nulla da invertire e nessuna traccia di ciò che è stato sostituito.

Cosa redact non fa dichiara il confine completo.

Documentazione

Guide complete, riferimento e modello di minaccia: redact.go.phpboyscout.uk. Documentazione API generata ed esempi eseguibili: pkg.go.dev.

Licenza

Vedi LICENSE.

Categorie