Supprimer les injections SQL WordPress : guide complet
L'injection SQL est la 3ème attaque la plus courante sur WordPress. Elle permet aux hackers de lire, modifier ou supprimer vos données. Voici comment détecter, nettoyer et prévenir ces attaques.
Qu'est-ce qu'une injection SQL ?
Une injection SQL (SQLi) exploite les failles dans les formulaires, URL ou paramètres pour injecter du code SQL malveillant dans la base de données WordPress. Au lieu de soumettre un nom dans un formulaire, l'attaquant soumet du code SQL qui sera exécuté par le serveur.
WordPress utilise MySQL pour stocker tout : articles, pages, utilisateurs, paramètres, commandes WooCommerce. Une injection SQL réussie peut :
- Voler des données : emails clients, mots de passe hashés, données de paiement
- Modifier du contenu : injection de liens spam, redirections, publicités
- Créer des comptes admin : accès permanent pour le hacker
- Supprimer des données : DROP TABLE, perte totale de contenu
- Installer des backdoors : insertion de code PHP dans wp_options
Comment détecter les injections SQL
🔍 Signes d'une injection SQL
- Contenus modifiés sans votre intervention (liens spam dans les articles)
- Comptes admin créés automatiquement dans la table
wp_users - Code JavaScript/PHP stocké dans
wp_optionsouwp_posts - Redirections configurées via des enregistrements en base de données
- Erreurs SQL visibles dans les pages du site
🔍 Requêtes SQL de diagnostic
Connectez-vous à phpMyAdmin et exécutez ces requêtes pour détecter les injections courantes :
Rechercher du code malveillant dans wp_options :
SELECT * FROM wp_options WHERE option_value LIKE '%eval(%' OR option_value LIKE '%base64_decode(%' OR option_value LIKE '%<script%';
Rechercher des admins suspects :
SELECT * FROM wp_users WHERE user_login NOT IN ('votre_login') AND ID IN (SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_capabilities' AND meta_value LIKE '%administrator%');
Rechercher du contenu injecté dans les articles :
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%' OR post_content LIKE '%eval(%' OR post_content LIKE '%iframe%';
Comment supprimer les injections SQL
1. Sauvegarder la BDD
Export complet de la base via phpMyAdmin AVANT toute modification. Cette sauvegarde est votre filet de sécurité.
2. Identifier les injections
Utilisez les requêtes de diagnostic ci-dessus pour localiser tous les enregistrements contaminés.
3. Nettoyer les données
Supprimez le code malveillant des champs contaminés. Attention : ne supprimez pas des lignes entières sans vérifier, vous pourriez perdre du contenu légitime.
4. Sécuriser les entrées
Corrigez les failles : mise à jour des plugins vulnérables, validation des entrées utilisateur, utilisation de requêtes préparées.
Prévenir les injections SQL
Les bonnes pratiques
- Mettre à jour WordPress et tous les plugins (87% des failles viennent de plugins obsolètes)
- Utiliser des requêtes préparées ($wpdb->prepare()) dans tout code custom
- Installer un WAF avec des règles anti-SQLi (OWASP Top 10)
- Limiter les droits BDD : l'utilisateur MySQL de WordPress ne devrait pas avoir DROP/ALTER
- Changer le préfixe de table : remplacer wp_ par un préfixe unique
- Valider/sanitizer toutes les entrées utilisateur côté serveur
Questions fréquentes
WordPress est-il vulnérable aux injections SQL ?
+
Un WAF protège-t-il contre les injections SQL ?
+
Peut-on nettoyer soi-même une injection SQL ?
+
Base de données infectée ? On la nettoie.
Nettoyage complet de la base de données WordPress, suppression des injections SQL et sécurisation.