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