NE JAMAIS COMMITER LES FICHIERS .env DANS GIT!
Les fichiers suivants contiennent des secrets et NE DOIVENT JAMAIS être commités :
backend/.envfrontend/.envweb3/.env.env
Si vous avez accidentellement commité des clés API, vous DEVEZ les régénérer immédiatement :
- Allez sur https://aistudio.google.com/app/apikey
- Supprimez l'ancienne clé
- Créez une nouvelle clé
- Mettez à jour
backend/.env:GEMINI_API_KEY=votre_nouvelle_cle
- Allez sur https://openrouter.ai/keys
- Révoquez l'ancienne clé
- Créez une nouvelle clé
- Mettez à jour
backend/.env:OPENROUTER_API_KEY=votre_nouvelle_cle
- CRÉEZ UN NOUVEAU WALLET - L'ancien est compromis!
- Transférez tous les fonds vers le nouveau wallet
- Mettez à jour
web3/.env:PRIVATE_KEY=votre_nouvelle_cle_privee
Si les clés ont été commitées, nettoyez l'historique Git :
# Supprimer les fichiers de l'historique
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch backend/.env web3/.env .env" \
--prune-empty --tag-name-filter cat -- --all
# Forcer le push (ATTENTION: réécrit l'historique)
git push origin --force --all- Utiliser des variables d'environnement
- Stocker les secrets dans
.env(gitignored) - Utiliser des services de gestion de secrets en production (AWS Secrets Manager, HashiCorp Vault)
- Régénérer les clés régulièrement
- Utiliser des clés différentes pour dev/staging/prod
- Commiter des fichiers
.env - Hardcoder des clés API dans le code
- Partager des clés par email/Slack
- Utiliser les mêmes clés en dev et prod
- Logger des clés API
// ✅ BON - Validation avec Zod
import { z } from 'zod';
const schema = z.object({
file: z.instanceof(File),
size: z.number().max(10 * 1024 * 1024) // 10MB
});
// ❌ MAUVAIS - Pas de validation
const file = req.file; // Accepte n'importe quoi// ✅ BON - React échappe automatiquement
<div>{userInput}</div>
// ❌ MAUVAIS - Injection HTML possible
<div dangerouslySetInnerHTML={{__html: userInput}} />// ✅ BON - Rate limiting configuré
app.use(rateLimiter); // 10 req/min
// ❌ MAUVAIS - Pas de limite
app.post('/api/analyze', handler); // Peut être spammé- Vérifier qu'aucun fichier
.envn'est staged - Vérifier qu'aucune clé API n'est dans le code
- Vérifier qu'aucun mot de passe n'est hardcodé
- Scanner avec
git secretsoutrufflehog
# Vérifier les fichiers staged
git diff --cached --name-only | grep -E '\.env$'- Régénérer les clés API pour la production
- Vérifier que HTTPS est activé
- Vérifier que les headers de sécurité sont en place
- Tester le rate limiting
- Scanner les vulnérabilités :
npm audit - Vérifier les logs (pas de données sensibles)
- Utiliser HTTPS uniquement
- Activer HSTS headers
- Configurer un WAF (Web Application Firewall)
- Mettre en place des alertes de sécurité
- Logs centralisés et monitoring
- Backups réguliers et chiffrés
# macOS
brew install git-secrets
# Linux
git clone https://github.com/awslabs/git-secrets.git
cd git-secrets
make install
# Configuration
git secrets --install
git secrets --register-aws# Scanner tout le repo
git secrets --scan
# Scanner l'historique
git secrets --scan-history- RÉVOQUER IMMÉDIATEMENT toutes les clés compromises
- RÉGÉNÉRER de nouvelles clés
- NOTIFIER l'équipe de sécurité
- ANALYSER les logs pour détecter une utilisation frauduleuse
- NETTOYER l'historique Git
- DOCUMENTER l'incident
- Sécurité: [email]
- DevOps: [email]
- Support Gemini: https://support.google.com/
- Support OpenRouter: https://openrouter.ai/support
- Sentry - Error tracking
- Datadog - APM & Security
- Cloudflare - WAF & DDoS protection
- OWASP Top 10 - Comprendre les vulnérabilités courantes
- Secure Coding - Pratiques de développement sécurisé
- API Security - Sécuriser les APIs REST
- Web3 Security - Sécurité blockchain et smart contracts
- ✅ Migration vers Gemini avec API key dans headers
- ✅ Ajout de HSTS headers en production
- ✅ Amélioration du CSP
- ✅ Suppression du header X-Powered-By
- ✅ Documentation de sécurité complète
- ✅ Rate limiting (10 req/min)
- ✅ Security headers (CSP, X-Frame-Options)
- ✅ Validation Zod
- ✅ File upload limits (10MB)
Dernière mise à jour: 2025-11-14
Prochaine revue: 2025-12-14