devopscodepro
Язык
Работает полностью в браузере — данные не покидают страницу.

Сканер секретов

Проверьте конфиг, .env, Dockerfile или манифест на случайно закоммиченные ключи — AWS, GitHub, приватные ключи, JWT — до того, как они попадут в git.

Перетащите конфиг или .env, чтобы просканировать

сканируется локально в браузере — файл никуда не загружается

Вставьте конфиг выше или перетащите файл, чтобы проверить его на утечки.

Ловим ключи раньше, чем это сделает git

Вставьте конфиг, .env, Dockerfile или CI-манифест — или перетащите файл — и он будет проверен по форматам токенов провайдеров, которые реально утекают: AWS, GitHub, GitLab, Slack, Stripe, Google, OpenAI, npm, SendGrid, Twilio, Telegram, плюс PEM-блоки приватных ключей, JWT, учётные данные в URL и generic-присвоения паролей с высокой энтропией.

Всё выполняется в браузере: вставлять файл, полный секретов, в страницу, которая его куда-то отправит, — значит обнулить смысл проверки, поэтому здесь так не происходит. Находки показываются маскированными (первые и последние четыре символа), а очевидные заглушки — env-подстановки, changeme и подобные — отфильтрованы.

Одно правило важнее сканера: секрет, хоть раз попавший в коммит, сгорел. Ротируйте его. Удаление строки, amend или force-push не отменяют утечку — логи CI, форки и клоны значение уже видели.

Почему он пометил значение, которое не секрет?

Generic-правило срабатывает на присвоения password/secret/token со случайным на вид значением (высокая энтропия). Сгенерированный несекретный ID может выглядеть так же. Провайдерские правила — AKIA…, ghp_…, sk_live_… — почти безошибочны, generic — повод посмотреть глазами.

Может ли он пропустить настоящий секрет?

Да. Сканер видит форматы, а не намерения: пароль-словарное слово или провайдер без узнаваемого префикса токена пройдут мимо. Чистый результат читайте как «ничего очевидного» и держите секреты вне файлов — в менеджере секретов или через инъекцию окружения.

Что делать, когда он нашёл секрет в репозитории?

Сначала ротировать ключ — это и есть исправление. Потом убрать его из истории, если репозиторий общий (git filter-repo), перенести значение в хранилище секретов и поставить pre-commit-сканер (gitleaks, trufflehog), чтобы следующий не долетел.

Почему JWT — только предупреждение?

Токены истекают: JWT в фикстуре или примере часто давно мёртв. Но неистёкший — это живая сессия, а refresh-токены живут дольше, чем кажется, поэтому каждый заслуживает взгляда, а не автоматической тревоги.

Смежные инструменты: Анализатор Dockerfile, Валидатор манифестов K8s и Проверка утечки пароля.