
Библиотека Go с нулевыми зависимостями, которая вырезает шаблоны, похожие на учётные данные (API-ключи, JWT, заголовки Authorization, userinfo в URL), прежде чем они попадут в логи/телеметрию.
Удаляет похожий на учётные данные контент из строк произвольной формы до того, как он попадёт в журналы, телеметрию или на любую стороннюю поверхность
Часть набора инструментов phpboyscout Go — небольшие Go-модули без фреймворков, извлечённые из go-tool-base. Документация: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact редактирует похожий на учётные данные контент из строк
произвольной формы на границе между доверенными и недоверенными поверхностями наблюдаемости —
вендорами телеметрии, агрегаторами журналов, хранилищами метрик. Сообщения об ошибках, аргументы
команд и значения HTTP-заголовков регулярно случайно содержат секреты (URL со встроенным userinfo,
флаг в , заголовок , процитированный в ошибке экспорта).
Пропустите их через на выходе — и они никогда не покинут процесс в открытом виде.
--api-key=sk-…os.ArgsAuthorizationredact.Stringregexp, strings) — в ваш граф
попадает лишь сам модуль. Проверка depfootprint_test.go гарантирует это.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 удаляет userinfo из URL для любой схемы (https://, postgres://,
redis://, …), присваивания учётных данных вида name=value, JSON-поля с учётными данными,
такие как "access_token" и "client_secret", токены заголовка Authorization, JWT,
известные префиксы провайдеров (sk-, ghp_, glpat-, AIza, AKIA, Slack)
и длинные непрозрачные токены. SensitiveHeaderKeys / IsSensitiveHeaderKey определяют
заголовки, значения которых следует редактировать.
Каталоги паттернов никогда не достигают полноты 100%, и этот намеренно консервативен:
String не маскирует произвольные значения заголовков. Он знает Authorization:
и ничего больше; X-API-Key: … проходит без изменений. Именно для этого существуют
идентификаторы заголовков.Чего redact не делает описывает полную границу.
Полные руководства, справочник и модель угроз: redact.go.phpboyscout.uk. Сгенерированная документация API и исполняемые примеры: pkg.go.dev.
См. LICENSE.