Поиск секретов в тексте

Сканер секретов в коде, .env или .npmrc: ключи AWS, GitHub, GitLab, Slack, NPM, Stripe, SendGrid, Mailgun, Azure, OpenAI и строки подключения.

Найдено: 0

Что ищется и как показывается находка

Что ищется. 19 типов: AWS Access Key ID, AWS Secret Access Key, GitHub token, GitLab token, Google API key, Slack token, Slack webhook URL, Stripe key, SendGrid API key, Mailgun API key, Azure Storage key, Azure SAS signature, NPM token, NPM-токен (.npmrc), OpenAI/Anthropic API key, JWT, Приватный ключ (PEM), Строка подключения, Секрет в .env. Значение показывается замаскированным: у токенов длиннее 16 символов видны первые и последние четыре, у коротких — только точки. Строка без совпадений не означает, что секретов нет: не ищутся публичные идентификаторы вроде Twilio Account SID, значения без префикса и секреты, разбитые переносом строки.

Готовые примеры

Что это и как пользоваться

Сканер ищет в тексте 19 типов секретов по характерным префиксам и форматам: ключи AWS (AKIA…), токены GitHub и GitLab, Google API, Slack и его вебхуки, Stripe, SendGrid, Mailgun, Azure вместе с SAS-подписью, NPM и .npmrc, OpenAI и Anthropic, JWT, PEM-ключи, строки подключения и присваивания в .env.

Порядок проверок задан по приоритету: специфичные токены идут первыми, общие присваивания из .env — последними, а совпадение, накрывающее уже найденный фрагмент, отбрасывается. Так один и тот же ключ не попадает в отчёт дважды.

Поиск идёт по мере ввода, поэтому вставлять файл целиком не обязательно: достаточно фрагмента, в котором подозреваете утечку.

Найденное значение маскируется: в отчёте видно тип, место и часть строки, но не весь секрет целиком — скриншот результата не выдаёт ключ.

Отдельным списком перечислено, что сканер не ищет: Twilio SID, публичные pk_-ключи Stripe и значения без опознаваемого префикса. Пустой результат сформулирован как «совпадений не найдено», а не «секретов нет».

Когда пригодится

  • Проверить .env и конфиги перед коммитом, чтобы не опубликовать живой ключ.
  • Прогнать фрагмент лога или дампа, который собираетесь передать коллеге.
  • Понять, как выглядит токен конкретного сервиса, чтобы узнавать его в ревью.
  • Найти место утечки в большом файле: отчёт указывает позицию, а не только факт.
  • Проверить вывод конфигурации перед публикацией в тикете: там часто остаются токены из окружения.
  • Проверить README и примеры конфигов: в них часто оставляют «примерные» ключи, неотличимые от настоящих.

Чего инструмент не делает

  • Поиск шаблонный: нестандартный секрет без префикса пройдёт мимо, а похожая на токен строка даст ложное срабатывание.
  • Найденный ключ не проверяется на действительность: запросов к провайдеру страница не делает.
  • Ключи не отзываются и не меняются: обнаружив утечку, секрет нужно перевыпустить у провайдера вручную.
  • Репозиторий целиком не сканируется: проверяется только вставленный текст, до 200 000 знаков.
  • Совпадений за раз не больше 500: в очень «грязном» файле отчёт обрывается, и остаток придётся проверять частями.

Примеры

Вход
                    текст с ключом AKIA…
                  
Выход
                    найдено: AWS Access Key ID — строка и позиция, значение замаскировано
                  
Вход
                    файл .env с DB_PASSWORD=…
                  
Выход
                    найдено: секрет в .env — имя переменной видно, значение скрыто