
Удаляет из строк произвольного формата содержимое, похожее на учётные данные, до того, как они попадут в журналы или телеметрию. Часть набора инструментов phpboyscout на Go. · https://redact.go.phpboyscout.uk
Удаляет содержимое, похожее на учётные данные, из строк произвольной формы до того, как они попадут в логи, телеметрию или любую стороннюю систему
Часть phpboyscout Go toolkit: небольшие Go-модули без привязки к фреймворкам, выделенные из go-tool-base. Документация: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact удаляет содержимое, похожее на учётные данные, из строк
произвольной формы на границе между доверенными и недоверенными поверхностями
наблюдаемости, такими как поставщики телеметрии, агрегаторы логов и хранилища метрик.
Сообщения об ошибках, аргументы команд и значения HTTP-заголовков регулярно
случайно содержат секреты (URL со встроенными данными пользователя, флаг
--api-key=sk-… в os.Args, заголовок Authorization, процитированный в ошибке
экспорта). Пропустите их через redact.String на выходе — и они никогда не покинут
процесс в открытом виде.
regexp, strings), так что в ваш
граф зависимостей попадает лишь сам модуль. Это обеспечивается защитой
depfootprint_test.go, которая ограничивает тесты testify и внутренним go/errors.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 удаляет данные пользователя из 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.