Verrouillez les secrets capitaux de votre API backend : chaînes de connexion SQL, clés privées JWT, clés d'API Stripe et identifiants SMTP via un fichier .env hermétique et validé au démarrage.
Le fichier .env ne doit JAMAIS apparaître dans un commit ou sur GitHub.
Vérification stricte de la présence de toutes les clés obligatoires avant d'écouter.
Empêcher tout utilisateur autre que le propriétaire de lire le fichier de variables.
Toute modification d'une variable dans .env exige un redémarrage du processus PM2.
import dotenv from 'dotenv';
// Charger les variables depuis le fichier .env
dotenv.config();
// Fonction de validation des variables d'environnement critiques
function validateEnv() {
const required = [
'DATABASE_URL',
'JWT_SECRET',
'PORT',
'CORS_ORIGIN'
];
const missing = required.filter((key) => !process.env[key]);
if (missing.length > 0) {
console.error(`❌ ERREUR FATALE: Variables d'environnement manquantes: ${missing.join(', ')}`);
process.exit(1); // Arrêt immédiat avant tout comportement imprévu
}
// Vérifier la robustesse de la clé secrète JWT
if (process.env.JWT_SECRET!.length < 32) {
console.warn('⚠️ AVERTISSEMENT: JWT_SECRET est trop court (minimum 32 caractères recommandés) !');
}
}
validateEnv();
console.log('✅ Configuration de production validée avec succès.');.env est intégré dans le JavaScript envoyé au navigateur. Tout visiteur peut l'extraire..env est dans .gitignore, comment les autres développeurs ou le serveur savent-ils quelles variables sont indispensables ? Vous devez commiter un fichier .env.example documentant les variables requises avec des valeurs factices :
| Plateforme d'Hébergement | Emplacement des Secrets | Mécanisme de Chargement |
|---|---|---|
| Serveur VPS Linux | Fichier /var/www/api/.env (chmod 600) | Bibliothèque dotenv ou gestionnaire systemd |
| Render / Railway | Section 'Environment' du tableau de bord | Injecté directement dans le runtime process.env |
| Vercel (Serverless Functions) | Settings > Environment Variables | Chiffré au repos et injecté lors de chaque invocation |
| Docker / Kubernetes | Fichier docker-compose ou Kubernetes Secrets | Variables injectées au lancement du conteneur |