Перейти к содержимому
>_ITDITDПлатформа веб-безопасности

Глоссарий

Что такое .env — что происходит при утечке файла окружения

.env собирает секреты приложения (учётные данные БД, ключи API, ключи шифрования) в одном файле. Почему это самый опасный файл, что разблокирует каждый утёкший секрет, куда его класть и как защитить в git и через ротацию — с самопроверкой.

Опубликовано 2026-06-07 Обновлено 2026-06-07 3 мин чтения

.env крайне удобен, и почти каждый современный фреймворк его использует. Но положите его не туда хоть раз — и это всё равно что приколоть связку ключей к входной двери. Разберём, что это и как его защитить, с нуля.

Чуть подробнее

У приложений есть «значения, меняющиеся от окружения к окружению» и «значения, которые никто не должен видеть»: пароль БД, внешние ключи API, ключ, шифрующий сеансы. Зашейте их в исходный код — и секреты утекут в тот момент, когда вы поделитесь кодом.

Поэтому вы собираете их в один файл .env и читаете из кода как «переменные окружения». Next.js, Laravel, Rails и многие фреймворки работают так.

Почему это «самый опасный файл»

Поскольку несколько ключей лежат в одном файле, единственное раскрытие быстро разносит ущерб. Перечисление «что разблокирует каждое утёкшее значение» делает серьёзность наглядной.

Утёкшее значениеЧто происходит
Учётные данные БДчтение / изменение / стирание данных
Внешние ключи APIиспользование от чужого имени, мошеннические списания
Ключ шифрования (например, Laravel APP_KEY, ключи подписи)подделка сеанса, вход от чужого имени
Секреты OAuthзахват связанных приложений

И правда, раскрытие .env — классический инцидент. → .env, открытый всему миру

Типичная утечка = ошибка размещения

Главная причина — «класть всё приложение в публичную директорию (docroot)». Там, где обслуживаться должен только public/, раскрытие его родительской папки делает .env тоже достижимым.

✗ Опасно (приложение в публичном корне)

public_html/
├─ .env   ← читается!
├─ app/
└─ public/

✓ Безопасно (приложение снаружи, обслуживается только public)

app-root/
├─ .env   ← недостижим
├─ app/
└─ public_html/ → public/
Держите приложение вне docroot и обслуживайте только public/. Уже это делает .env недостижимым.

Как его защитить

1

Не кладите его в публичную директорию

Держите приложение вне docroot; обслуживайте только public/. Конкретные шаги для шаред-хостинга: это руководство.

2

Не коммитьте его в git

Добавьте .env* в .gitignore и делитесь только .env.example с пустыми значениями.

3

Ротируйте всё, если он утёк

Не только подтверждённый ключ — замените каждый ключ, что был в .env. Действуйте так, будто видели все.

4

Регулярно делайте самопроверку

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

Самопроверка (только против доменов, которыми вы владеете)

# 200 с телом означает, что он раскрыт. 403/404 — пока в порядке.
curl -sI https://yourdomain/.env | head -1
curl -sI https://yourdomain/.git/config | head -1

Проверка этого при каждом деплое рано ловит ошибки размещения.

Читать дальше

FAQ

QМожно ли коммитить .env в git?
A

Нет. Добавьте .env в .gitignore. Вместо этого закоммитьте .env.example с пустыми значениями, чтобы поделиться тем, какие ключи нужны.

QЕсли из .env утечёт хотя бы один секрет, что я ротирую?
A

Не только тот, который вы подтвердили, — ротируйте каждый ключ, что был в .env. Приоритет: внешние API / секреты OAuth → ключи шифрования → почта → БД. Действуйте так, будто видели все.

QКак проверить, не утёк ли .env?
A

Откройте https://yourdomain/.env в браузере. Если содержимое показывается — он раскрыт (200 с телом = плохо). Если он заблокирован (403/404), пока вы в порядке.