Chaque jour, des milliers de sites web d'entreprises sont compromis. Le plus souvent, non pas par des hackers sophistiqués, mais à cause d'erreurs basiques et évitables. En tant que développeur spécialisé en sécurité, j'ai audité des dizaines d'applications et je retrouve toujours les mêmes failles. Voici les 5 plus dangereuses — et comment les corriger.
Statistique alarmante : 43% des cyberattaques ciblent les petites et moyennes entreprises. Le coût moyen d'une violation de données pour une PME est de 120 000 €.
L'injection SQL permet à un attaquant d'injecter du code SQL malveillant dans un formulaire ou une URL pour accéder, modifier ou supprimer des données de votre base de données. C'est la vulnérabilité la plus répandue et la plus dévastatrice.
Exemple d'attaque
$query = "SELECT * FROM users WHERE email = '" . $_POST['email'] . "'";
Un attaquant saisit admin'-- dans le champ email et contourne l'authentification.
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$_POST['email']]);
Toujours utiliser des requêtes préparées (Prepared Statements) avec PDO ou MySQLi. Ne jamais concaténer directement les données utilisateur dans une requête SQL.
Stocker les mots de passe en clair dans la base de données est une erreur catastrophique. En cas de fuite, tous vos utilisateurs sont immédiatement compromis. De même, des règles de mot de passe laxistes facilitent les attaques par brute-force.
// JAMAIS faire ça : INSERT INTO users SET password = 'motdepasse123'; // Ou MD5 qui est crackable en secondes : $hash = md5($password);
// Création
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
// Vérification
if (password_verify($inputPassword, $hash)) {
// Authentification réussie
}
Utiliser bcrypt ou Argon2 pour hacher les mots de passe. Implémenter une politique de mot de passe fort (12 caractères min, majuscules, chiffres, symboles) et proposer l'authentification à deux facteurs (2FA).
Un site sans HTTPS expose les données de vos utilisateurs en transit. Mots de passe, informations personnelles, données de carte bancaire — tout circule en clair et peut être intercepté (attaque "Man in the Middle").
En plus du risque sécuritaire, Google pénalise les sites HTTP dans son classement et Chrome affiche un avertissement "Non sécurisé" repoussant immédiatement vos visiteurs.
Installer un certificat SSL (gratuit avec Let's Encrypt). Configurer une redirection automatique HTTP → HTTPS. Vérifier la date d'expiration régulièrement et activer le renouvellement automatique. Utiliser HSTS pour forcer HTTPS.
WordPress, jQuery, PHP, Node.js… Utiliser des versions obsolètes de vos bibliothèques expose votre site à des vulnérabilités connues et documentées, exploitables par n'importe qui avec une recherche Google.
Exemple réel : En 2017, la faille Equifax a exposé les données de 147 millions de personnes à cause d'un framework (Apache Struts) non mis à jour pendant 2 mois après la publication d'un patch de sécurité.
Mettre en place une veille sécurité automatisée (Dependabot sur GitHub, npm audit, Composer audit). Appliquer les mises à jour de sécurité dans les 48h suivant leur publication. Utiliser uniquement des dépendances activamente maintenues.
Le Cross-Site Scripting (XSS) permet à un attaquant d'injecter du JavaScript malveillant dans vos pages. Si les cookies de session ne sont pas correctement sécurisés, l'attaquant peut voler la session d'un utilisateur connecté (session hijacking).
setcookie('session_id', $session_id);
// Cookie accessible en JavaScript, transmis en HTTP
setcookie('session_id', $session_id, [
'expires' => time() + 3600,
'secure' => true, // HTTPS uniquement
'httponly' => true, // Inaccessible en JS
'samesite' => 'Strict' // Protection CSRF
]);
Configurer les cookies avec les flags HttpOnly, Secure et SameSite. Échapper toutes les sorties HTML (htmlspecialchars()). Implémenter une Content Security Policy (CSP) stricte. Régénérer l'ID de session après connexion.
Tableau récapitulatif OWASP Top 10
| Vulnérabilité | Risque | Protection principale |
|---|---|---|
| Injection SQL | Critique | Requêtes préparées |
| Authentification faible | Critique | bcrypt + 2FA |
| Exposition de données sensibles | Critique | HTTPS + chiffrement |
| XSS | Élevé | Échappement + CSP |
| Dépendances vulnérables | Élevé | Mises à jour régulières |
| CSRF | Élevé | Tokens CSRF + SameSite |
Votre site est-il vraiment sécurisé ?
Je réalise des audits de sécurité complets pour identifier et corriger les failles de votre application web.
Demander un audit sécurité →