•Redouan
On s'est fait pirater. On ne sait pas comment.
Appel reçu un dimanche matin. Base de données exposée sur le dark web.
Une PME me contacte en urgence. Leurs données clients sont en vente sur un forum. 15 000 comptes. Emails, mots de passe hashés (en MD5... 😬), adresses.
Ce que j'ai trouvé :
- Injection SQL sur un formulaire de recherche
- Mots de passe hashés en MD5 (crackable en minutes)
- Pas de rate limiting sur le login
- Fichiers uploadés exécutables
- .env accessible publiquement
Bingo. Le jackpot des failles.
Les failles les plus courantes (OWASP Top 10) :
1. Injection SQL
// ❌ Dangereux
$query = "SELECT * FROM users WHERE id = " . $_GET['id'];
// ✅ Paramètres préparés
$query = "SELECT * FROM users WHERE id = :id";
2. XSS (Cross-Site Scripting)
Toujours échapper les données affichées. Twig le fait par défaut. Ne le désactivez pas.
3. CSRF (Cross-Site Request Forgery)
Tokens CSRF sur tous les formulaires. Symfony le gère nativement.
4. Authentification faible
- Bcrypt ou Argon2 pour les mots de passe
- Rate limiting sur le login
- 2FA pour les comptes sensibles
5. Exposition de données sensibles
- .env hors du web root
- Logs sans données personnelles
- HTTPS partout
Le minimum vital pour votre application web :
- ✅ Dépendances à jour (
composer audit) - ✅ Headers de sécurité (CSP, HSTS, X-Frame-Options)
- ✅ Validation des entrées côté serveur
- ✅ Logs et monitoring des tentatives suspectes
- ✅ Backups testés régulièrement
La leçon ?
La sécurité n'est pas une feature. C'est un prérequis. 🎯
Et le coût d'une faille ? Bien plus élevé que le coût de la prévention.
Vous n'êtes pas sûr du niveau de sécurité de votre application ?
👉 Contactez-moi. Audit sécurité et recommandations concrètes.