Де секрети ховаються найчастіше
Починайте не з усього репозиторію, а зі змінених файлів. Найчастіше проблема не в основному коді, а в місцях, які здаються допоміжними:
.env,.env.local,.npmrc,.pypirc,.dockercfg;- приклади конфігів і README;
- CI-файли, скрипти деплою, Dockerfile;
- тести, тестові дані, snapshots;
- тимчасові логи, debug-вивід, експортований JSON.
Небезпечний секрет не завжди виглядає як password. Це може бути URL вебхука, токен приватного реєстру, ключ для деплою, хмарні облікові дані, cookie сесії або тестовий ключ, який раптом має доступ до реального сервісу.
Що можна давати AI
Не вставляйте в AI реальний токен, навіть якщо саме його хочете перевірити. Краще замініть значення на форму:
ghp_...redacted;sk_live_...redacted;https://hooks.example.com/...redacted;DATABASE_URL=postgres://user:REDACTED@host/db.
AI не потрібне повне значення секрету, щоб побачити ризик. Йому потрібні контекст, назви файлів, тип проєкту і форма підозрілого рядка.
Як перевірити знахідки локально
Після AI-перевірки все одно зробіть локальний контроль. Мінімальний набір:
git diff --cached
git status --short
Якщо в проєкті є сканер секретів, запускайте його до git push. Якщо немає, хоча б пошукайте типові слова у підготовленому diff:
git diff --cached | rg -i "token|secret|password|api[_-]?key|private|credential"
Це не гарантує повну безпеку, але ловить багато дурних помилок до того, як вони стануть інцидентом.
Якщо секрет уже потрапив у commit
Не починайте з видалення рядка і нового commit-а. Якщо секрет уже був у git history або у віддаленому репозиторії, правильний порядок інший:
- Rotate: зробіть старий секрет недійсним.
- Приберіть секрет із поточного коду.
- Вирішіть, чи треба переписувати git history.
- Перевірте логи доступу, якщо секрет давав реальні права.
- Додайте правило, сканер або pre-commit hook, щоб помилка не повторилась.
Головне: видалений рядок не означає, що секрет більше не існує. Якщо хтось міг його побачити, його треба вважати скомпрометованим.
Коротко
Перевірка секретів перед відправленням у git - це не параноя, а нормальна гігієна. AI тут корисний як уважний другий погляд, але тільки якщо ви не даєте йому сам секрет.
Найкраща помилка з токеном - та, яку ви знайшли до git push.
Короткий чеклист
- Перевірити `.env`, приклади конфігів, тести, README і CI-файли.
- Не вставляти реальні секрети в AI-запит.
- Відрізнити безпечний приклад від справжнього токена.
- Запустити локальну перевірку перед `git push`.
- Якщо секрет уже засвітився, спочатку замінити його, потім чистити історію.
- Додати правило або hook, щоб така помилка не повторилась.
Перевірити секрети перед відправленням у git
Допоможи перевірити зміни перед git push, щоб я не злив секрети. Контекст: - Тип проєкту: [фронтенд / бекенд / CLI / інфраструктура / інше] - Змінені файли: [встав список файлів] - Підозрілі фрагменти або diff: [встав тільки релевантні шматки без реальних секретів] - Де зазвичай живуть конфіги: [.env, CI-змінні, менеджер секретів, інше] - Що можна вважати секретом у цьому проєкті: [API-ключі, токени, паролі, приватні URL, сертифікати] Зроби перевірку: 1. Назви місця, де секрети найімовірніше могли потрапити в код. 2. Відміть рядки або патерни, які схожі на токени, паролі, ключі, приватні URL або тестові облікові дані. 3. Скажи, що треба прибрати з git і що можна лишити як безпечний приклад. 4. Запропонуй локальні команди для перевірки перед push. 5. Якщо секрет уже потрапив у commit, дай короткий план: заміна секрету, видалення, чистка історії або окрема задача. Формат відповіді: - Знахідки з високим ризиком - Підозріле, але потребує людської перевірки - Безпечні приклади - Команди перед відправленням - Якщо вже засвітилось: наступні дії