Knowledge Base

Открытый .env файл: утечка секретов

Что обычно содержит .env

Категория: Web App Security · Риск: critical

Что обычно содержит .env

DB_HOST=localhost
DB_PASSWORD=super_secret_password
SECRET_KEY=django-insecure-xyz123
STRIPE_SECRET_KEY=sk_live_...
SMTP_PASSWORD=mailpassword
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG

Любой из этих секретов достаточен для компрометации.

Немедленные действия при обнаружении утечки

1. Закройте доступ к .env (см. ниже) 2. Замените ВСЕ скомпрометированные ключи/пароли 3. Проверьте логи на несанкционированный доступ 4. Уведомьте команду

Блокировка в Nginx

location ~ /\.(env|git|svn|htaccess|htpasswd) {
    deny all;
    return 404;
}

Блокировка в Apache

<FilesMatch "^\.env">
    Require all denied
</FilesMatch>

Размещение .env вне webroot

Лучший подход — держать .env вне `/var/www/html`:

/var/secrets/.env  # вне webroot
/var/www/html/     # webroot
# Python: загрузить из нестандартного пути
from dotenv import load_dotenv
load_dotenv('/var/secrets/.env')

.gitignore

.env
.env.local
.env.*.local
*.env