Секрет попал в git: что делать
Вопрос
Ты обнаружил, что ключ платёжного API закоммичен в публичный репозиторий. Твои действия?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Сразу отозвать и перевыпустить ключ (ротация): это главное
Удалить из истории недостаточно: копии уже могли забрать
Проверить логи провайдера на подозрительное использование
Положить новый ключ в менеджер секретов или env, не в репозиторий
Чистка истории (git filter-repo) как вторичная мера
Профилактика: secret scanning, pre-commit хук, .env в .gitignore
Что могут спросить следом
- Почему недостаточно сделать новый коммит, удаляющий ключ?
- Как автоматически ловить секреты до коммита?
Разбор
Первым делом отзываю ключ у провайдера и выпускаю новый. Считаю, что старый уже скомпрометирован: публичные репозитории сканируют боты за минуты, и удаление коммита этого не отменит. Новый коммит, удаляющий ключ, тем более ничего не даёт: ключ остаётся в истории.
Дальше проверяю журналы провайдера: были ли запросы с этим ключом не от нас. Новый ключ кладу в переменные окружения сервера или менеджер секретов, в коде остаётся только чтение из окружения.
Потом, если нужно, чищу историю через git filter-repo и согласую с командой форс-пуш, но это уже вторично. И добавляю профилактику: .env в .gitignore, secret scanning в репозитории и pre-commit хук вроде gitleaks, чтобы такое не повторилось.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Безопасность бэкенда»
- Безопасный INSERT: параметры и белый список колонок
- CORS: проверка Origin по белому списку
- Проверка claims JWT после подписи
- deepMerge без prototype pollution
- Rate limiter на token bucket
- Кто превысил лимит запросов: скользящее окно
- Код-ревью: регистрация, вход и сброс пароля
- Как защитить Node.js API