Skip to content
imarch.dev
Назад в блог
· 2 мин чтения

.env в открытом доступе

безопасность devops docker nginx

Первое что я сделал после деплоя Planq. Открыл браузер и набрал адрес своего продукта с /.env на конце.

Файл отдался. Пароль к базе данных. Ключ шифрования. SMTP-креды. Всё в открытом виде. У сервиса в который я неделю назад позвал людей из LinkedIn.

Треснутый замок на экране терминала с предупреждениями

Причина простая

Фронтенд отдаёт любой URL если не находит маршрут. Nginx не блокировал скрытые файлы. Классика. Но пост не про баг.

Пост про то что я знал об этом. Знал что .env нельзя отдавать наружу. Знал что Docker по умолчанию открывает порты на весь мир и бэкенд доступен мимо nginx. Знал что сервер показывает свою версию в каждом ответе. Три вещи из любого чеклиста по безопасности. И все три были открыты.

Фичи видно, дыры нет

Когда ты фаундер-одиночка, безопасность конкурирует за внимание с фичами, багами, деплоем и контентом. И проигрывает. Потому что фичи видно, а дыры нет. Пока кто-нибудь не зайдёт.

Починил за вечер. Скрытые файлы заблокированы. Порты слушают только localhost. Версия сервера скрыта. Три строчки в конфиге. Три строчки которые отделяют «я в облаке» от «мои данные в облаке».

Фундамент был крепкий

TLS 1.3, HSTS, CSRF-токены, JWT в httpOnly cookies, rate limiting, Swagger спрятан. Не всё было плохо. Но три очевидные дыры перечёркивают любой фундамент.

Приоритеты, не знания

Безопасность не ломается. Она откладывается. «Сделаю после релиза.» «Это же MVP.» «Пока некритично.» А потом MVP становится продуктом. И «потом» не наступает.

Самое полезное что я вынес, это привычку. Написал, задеплоил, переключился. Попробуй сломать то что только что отправил в прод. Неприятно. Находишь вещи которые знал, но не сделал. Зато находишь ты, а не кто-то другой.

Если вы запускали продукт и откладывали безопасность на потом, откройте /.env прямо сейчас. Серьёзно.


Читайте также

Поделиться:

Похожие статьи