Как мы сами слили пароли от прода в паблик и узнали об этом от робота

Привет, vc.ru. Помните нас — команда на FastAPI и React, которая в прошлый раз превратила сервер в кассу фастфуда одной кнопкой? Мы снова здесь, и снова с историей, после которой хочется закопать телефон.

Один проект вышел настолько красивым, что мы захотели похвастаться им в портфолио. Ночь, дедлайн горит, надо срочно скинуть ссылку заказчику — один из нас делает репозиторий публичным и уходит спать со спокойной совестью.

А зря. Где-то в истории коммитов полгода пылился файл .env — кто-то закинул его туда «на секунду, проверить», да так и забыл. Внутри — ключи от боевой базы клиента и токен внешнего API. Настоящие, живые, рабочие.

Через 40 минут прилетает письмо от GitHub: обнаружен утёкший секрет. Не клиент нам написал. Не заказчик позвонил. Робот. Мы узнали, что накосячили, раньше, чем успели об этом подумать сами.

Дальше — классика: три часа ночи, все в чате, никто не спит, кто-то предлагает удалить аккаунт и уехать жить в лес. Вместо леса — закрыли репозиторий, за час переписали все ключи, вычистили секрет из истории git так, будто его никогда не было, и сами написали клиенту, пока он ещё ничего не заметил. Повезло — украсть за 40 минут никто не успел.

Урок вышел простым и болезненным одновременно: секреты в коде — это не «пока полежит», это бомба с задержкой, которая рванёт ровно тогда, когда меньше всего этого ждёшь.

Сейчас у нас .env вообще не попадает в код — только переменные окружения на сервере. Перед каждым коммитом стоит проверка, которая орёт, если чувствует в файле что-то похожее на пароль. А решение сделать репозиторий публичным теперь принимает не один уставший человек в полночь, а минимум трое трезвых днём.

Мы не рассказываем это, чтобы вызвать сочувствие. Мы рассказываем, потому что разница между нами и любой другой молодой студией — не в том, что мы не косячим. Косячат все. Разница в том, что после этого у нас остался процесс, а не просто неловкая история для друзей.

1