📝 Guide Expert

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_options ou wp_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 ?

+
Le core WordPress est bien protégé grâce à $wpdb->prepare(). Cependant, les plugins et thèmes tiers sont souvent vulnérables, surtout ceux qui ne sont pas maintenus. C'est par ces extensions que passent 90% des injections SQL.

Un WAF protège-t-il contre les injections SQL ?

+
Oui, un bon WAF (Web Application Firewall) filtre les requêtes contenant des patterns d'injection SQL avant qu'elles n'atteignent votre base de données. C'est la protection la plus efficace en amont.

Peut-on nettoyer soi-même une injection SQL ?

+
C'est possible pour les cas simples, mais risqué. Une mauvaise manipulation en base de données peut casser votre site. Pour les cas complexes, un nettoyage professionnel est fortement recommandé.

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.