đ `.env` + `.gitignore` : La rĂšgle dâor pour TOUS les projets
Clés d'API en clair ? Mots de passe commités sur GitHub ? Ne soyez pas la prochaine victime d'une fuite de données. Découvrez le guide universel pour maßtriser .env et .gitignore sur PHP, JS, Python et plus encore. Une méthode unique pour sécuriser tous vos projets.
Prompt pour l'IA
Analyse le code suivant pour vĂ©rifier le respect des bonnes pratiques liĂ©es Ă l'utilisation des fichiers .env. Pour chaque point, indique si la rĂšgle est respectĂ©e (â
), violĂ©e (â), ou partiellement respectĂ©e (â ïž), et propose une correction :
- Chargement : Est-il sécurisé (ex:
createImmutableen PHP,dotenv.config()en JS) ? Y a-t-il une gestion d'erreur si.envmanque ?- AccÚs : Les variables sont-elles accédées via
$_ENV,process.env,os.getenv, etc. ? Y a-t-il des accÚs directs dangereux ou du hardcoding ?- Validation : Les variables requises (DB, API) sont-elles vérifiées avant utilisation ?
- Sécurité Git : Le fichier
.envest-il exclu du versionnage ?
Explication détaillée
đ 1. Description courte du problĂšme
ProblÚme : Les fichiers .env mal gérés sont la 1Úre cause de fuites de secrets.
Risques :
- Exposition publique via Git.
- Injectons de variables si elles ne sont pas validées.
- AccÚs par URL (spécifique au Web/PHP) si le fichier est dans le dossier racine.
Solution attendue : Chargement immuable, validation stricte, et exclusion Git totale.
đ ïž 2. Guide technique par langage
Tableau de configuration parallĂšle
| Ătape | JavaScript | Python | PHP | Go |
|---|---|---|---|---|
| Installation | npm install dotenv |
pip install python-dotenv |
composer require vlucas/phpdotenv |
go get github.com/joho/godotenv |
Charger .env |
require('dotenv').config() |
load_dotenv() |
Dotenv::createImmutable(__DIR__)->load() |
godotenv.Load() |
| Validation | if (!process.env.VAR) throw... |
assert "VAR" in os.environ |
$dotenv->required(['VAR'])->notEmpty() |
Manuelle avec os.Getenv |
đ 3. Focus SĂ©curitĂ© : Le Cas du Web
Le risque est que le fichier soit servi en clair par Apache ou Nginx.
- Sécurité physique : Placez le fichier
.enven dehors du dossier racine (public/ouwww/). - Validation stricte avec
phpdotenv:$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../'); $dotenv->load() // EmpĂȘche le script de continuer si ces clĂ©s sont vides ou absentes $dotenv->required(['DB_PASSWORD', 'SECRET_KEY'])->notEmpty(); // Validation de format $dotenv->required('ENVIRONMENT')->allowedValues(['dev', 'staging', 'prod']);
đ 4. La stratĂ©gie Git / .gitignore
Avant votre premier commit, créez un fichier .gitignore à la racine :
# Dossiers de dépendances
node_modules/
vendor/
__pycache__/
# SECRETS (Ă IGNORER ABSOLUMENT)
.env
.env.local
.env.*.local
# ARCHITECTURE (Ă GARDER)
!.env.example
đ 5. Utilisation en Production
La rĂšgle d'or : Jamais de fichier .env sur un serveur de production.
Utilisez les variables d'environnement systĂšme :
| Environnement | Méthode |
|---|---|
| Cloud (Vercel/Heroku) | Dashboard > Settings > Environment Variables |
| Docker | Section environment: dans docker-compose.yml |
| Apache | SetEnv DB_PASSWORD "xxx" dans .htaccess |
| Nginx | fastcgi_param DB_PASSWORD "xxx"; dans la config |
đ 6. VĂ©rification de sĂ©curitĂ© (Commandes)
Lancer ces audits réguliÚrement :
# 1. Vérifier que .env est ignoré par Git
git check-ignore -v .env
# 2. Scanner les fuites de secrets (Outil : TruffleHog ou Gitleaks)
gitleaks detect --source . --report-path report.json
# 3. Vérifier les permissions systÚme
ls -la .env # Doit ĂȘtre "-rw-------" (chmod 600)
đ Checklist finale (Toutes technos)
- [ ] Fichier .env ajouté au .gitignore.
- [ ] Fichier .env.example créé (sanitisé).
- [ ] Variables de base validées au démarrage de l'app.
- [ ] Utilisation de createImmutable (en PHP) ou méthodes équivalentes.
- [ ] Zéro secret hardcodé dans le code source.
"Un
.envcommitĂ© est un.envcompromis. Un.enven production est un.envvulnĂ©rable." đ