🔒 `.env` + `.gitignore` : La rùgle d’or pour TOUS les projets

PubliĂ© le 13/01/2026 par l’équipe GeoCodeTout dans la catĂ©gorie « GĂ©nĂ©ralitĂ©s »

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 :

  1. Chargement : Est-il sécurisé (ex: createImmutable en PHP, dotenv.config() en JS) ? Y a-t-il une gestion d'erreur si .env manque ?
  2. 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 ?
  3. Validation : Les variables requises (DB, API) sont-elles vérifiées avant utilisation ?
  4. Sécurité Git : Le fichier .env est-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 .env en dehors du dossier racine (public/ ou www/).
  • 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)

  1. [ ] Fichier .env ajouté au .gitignore.
  2. [ ] Fichier .env.example créé (sanitisé).
  3. [ ] Variables de base validées au démarrage de l'app.
  4. [ ] Utilisation de createImmutable (en PHP) ou méthodes équivalentes.
  5. [ ] Zéro secret hardcodé dans le code source.

"Un .env commitĂ© est un .env compromis. Un .env en production est un .env vulnĂ©rable." 🚀