Fichier .env exposé — la réponse à incident en 30 minutes | Scanthra

Scanthra · 6 min de lecture · Mis à jour Mai 2026

Mai 2026
TL;DR : Si https://tonsite.com/.env renvoie tes clés API, le mot de passe de ta base de données et tes identifiants SMTP, traite ça comme une compromission active, même si personne ne les a encore utilisés. Fais pivoter tout, audite l'utilisation, puis bloque le chemin. Prévois 30 minutes de travail concentré et quelques jours de suivi.

Pourquoi un fichier .env exposé est sérieux

Un fichier .env contient généralement :

Des scanners internet comme Shodan, BinaryEdge et des dizaines de botnets collecteurs de credentials récupèrent continuellement /.env sur des millions d'hôtes. Si le tien est public, considère qu'il a déjà été lu. Le coût d'une rotation est bien inférieur au coût d'une fuite de données.

Étape 1 — Faire pivoter chaque secret du fichier

Ouvre le fichier (ou ta sauvegarde) et pour chaque entrée :

Utilise un gestionnaire de mots de passe ou ton gestionnaire de secrets (AWS Secrets Manager, Doppler, 1Password, Bitwarden) pour générer les nouvelles valeurs. Ne réutilise jamais les anciens secrets.

Étape 2 — Auditer l'utilisation des clés compromises

Avant d'oublier les anciennes clés, vérifie si quelqu'un les a utilisées pendant qu'elles étaient exposées :

Si tu trouves quelque chose de suspect : c'est un incident confirmé — escalade, documente, suis ton plan de réponse à incident, et notifie les clients si des données personnelles sont impliquées. Les entités dans le périmètre NIS2 (directive UE sur la cybersécurité) doivent déposer une alerte précoce dans les 24 heures.

Étape 3 — Bloquer le chemin définitivement

Le fichier exposé vivait probablement à la racine de ton application parce que la racine web du framework est un niveau trop haut. Deux couches de défense valent mieux qu'une :

Déplace le fichier hors de la racine web :

mkdir /etc/myapp
mv /var/www/myapp/.env /etc/myapp/.env
chmod 600 /etc/myapp/.env
chown www-data:www-data /etc/myapp/.env

Mets à jour ton application pour qu'elle lise depuis le nouveau chemin.

Et bloque les fichiers cachés au niveau du serveur web :

# nginx
location ~ /\.(?!well-known) { deny all; return 404; }
# Apache
<FilesMatch "^\.">
  Require all denied
</FilesMatch>

Étape 4 — S'assurer que ça ne se reproduit jamais

Et l'historique Git ?

Si .env a un jour été commis dans un dépôt public — même brièvement, même il y a des années — considère que les secrets sont compromis. La recherche GitHub et des milliers de scrapers de données d'entraînement l'ont. git filter-repo réécrit l'historique, mais tu dois quand même faire pivoter les valeurs, parce que des copies existent hors de ton contrôle.

La leçon ennuyeuse

Le fichier .env exposé est l'un des problèmes détectés les plus fréquents par Scanthra sur des projets PHP, Laravel, Django, Rails et Node. La cause racine est presque toujours : « j'ai suivi un tutoriel qui mettait .env à la racine du projet et j'ai oublié que le serveur web servait les fichiers statiques depuis là. » Déplacer le fichier d'un répertoire vers le haut — et ajouter la règle de blocage des fichiers cachés — ferme toute cette classe de problèmes.

Comment Scanthra détecte ça

Notre module Hidden Files vérifie une liste blanche soigneusement sélectionnée de chemins incluant .env, .env.local, .env.production, .git/config, /backup.sql, /dump.sql, /wp-config.php.bak et plus encore. Nous complétons ça avec des vérifications de magic bytes (ZIP, gzip, en-têtes SQLite) pour distinguer une vraie sauvegarde d'une page 404 qui renvoie par hasard un 200.

Tu veux savoir si ton site est concerné ?

Scanthra effectue une vérification passive et te l'envoie par e-mail sous forme d'un rapport PDF en langage clair.

Analyser ton site gratuitement