Добавить в корзинуПозвонить
Найти в Дзене
Вселенная ИИ

История о том, почему золотые правила безопасности пишутся кровью и седыми волосами

Никогда не правьте код прямо на боевом сервере. Я это правило нарушил: решил по-быстрому изменить пару строк по VS Code и расширением SSH FS. Итог — обрыв связи, редактор сохраняет пустоту, и мой файл на 4400 строк сложнейшей логики весить 0 байт. Бэкапа нет. Месяц работы просто испарился. Чего только не передумал, как восстановить: были наброски, куски в чатах ИИ, но всё равно это не вариант, и пришлось бы выполнять большую часть заново. Что спасло ситуацию? Я не успел рестартануть сервис! Демон Uvicorn всё ещё крутился в памяти сервера. А значит, Python где-то держал этот код. Я полез в скрытую папку pycache и нашел там скомпилированный байт-код: main_pars_url.cpython-310.pyc. Скрипт был жив! Далее дела техники. Начиная с Python 3.10 старые декомпиляторы не работают. Пришлось скормить файл онлайн-декомпилятору, который выплюнул жуткого «Франкенштейна»: поехавшие отступы, сломанные elif и убитый синтаксис. Запустить это было нереально. Ну тут два варианта: или править самому, или с

История о том, почему золотые правила безопасности пишутся кровью и седыми волосами.

Никогда не правьте код прямо на боевом сервере. Я это правило нарушил: решил по-быстрому изменить пару строк по VS Code и расширением SSH FS. Итог — обрыв связи, редактор сохраняет пустоту, и мой файл на 4400 строк сложнейшей логики весить 0 байт. Бэкапа нет. Месяц работы просто испарился.

Чего только не передумал, как восстановить: были наброски, куски в чатах ИИ, но всё равно это не вариант, и пришлось бы выполнять большую часть заново.

Что спасло ситуацию? Я не успел рестартануть сервис! Демон Uvicorn всё ещё крутился в памяти сервера. А значит, Python где-то держал этот код. Я полез в скрытую папку pycache и нашел там скомпилированный байт-код: main_pars_url.cpython-310.pyc. Скрипт был жив!

Далее дела техники. Начиная с Python 3.10 старые декомпиляторы не работают. Пришлось скормить файл онлайн-декомпилятору, который выплюнул жуткого «Франкенштейна»: поехавшие отступы, сломанные elif и убитый синтаксис. Запустить это было нереально.

Ну тут два варианта: или править самому, или скормить ИИ-шке. Конечно, я выбрал второй :))

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

Выводы, написанные нервными клетками:

1. Никаких правок на проде. Git -> Деплой.

2. Никогда не хардкодьте ключи, только переменные окружения.

3. ННа первый взгляд, даже в безвыходных ситуациях выход может лежать на поверхности.