Vous aimeriez aussi lire...

Imaginez : votre site WordPress est piraté, vos données clients fuient, et vos années de contenu disparaissent en quelques clics. Ce scénario cauchemardesque arrive chaque jour à des milliers de sites mal protégés. La bonne nouvelle ? 90 % des attaques exploitent des failles basiques dans la base de données – et ce tutoriel va vous montrer comment les verrouiller en moins de 2 heures, même sans être expert.
Pré-requis et vision d’ensemble : ce dont vous aurez besoin
Avant de commencer, vérifiez ces éléments essentiels. Pas de panique : la plupart sont déjà disponibles sur votre hébergement.
| Élément | Version minimale | Où le trouver | Temps estimé |
|---|---|---|---|
| Accès FTP/SFTP | N/A | Tableau de bord de votre hébergeur (FileZilla, cPanel) | 5 min |
| Accès phpMyAdmin | 5.0+ | Section »Bases de données » de votre hébergement | 10 min |
| WordPress | 5.6+ (recommandé 6.0+) | Tableau de bord WP → Mises à jour | 15 min |
| Éditeur de code | VS Code, Notepad++, Sublime Text | Téléchargement gratuit | Installation : 5 min |
Note pour les débutants : Si vous utilisez un hébergement mutualisé (OVH, Hostinger, SiteGround), la plupart de ces outils sont préinstallés. Pour les solutions cloud (AWS, DigitalOcean), vous devrez peut-être configurer manuellement certains accès.
Tutoriel pas à pas : 6 étapes pour blindé votre base de données WordPress
Étape 1 : Changer le préfixe des tables (même sur un site existant)
Objectif : Empêcher les attaques par injection SQL qui ciblent systématiquement le préfixe par défaut wp_.
- Sauvegardez votre base :
- Dans phpMyAdmin, sélectionnez votre base → onglet »Exporter » → méthode »Rapide » → format SQL → lancez l’export.
- Conservez ce fichier sur votre ordinateur ET dans un cloud (Google Drive, Dropbox).
- Modifiez le préfixe :
- Ouvrez votre fichier wp-config.php (à la racine de WordPress via FTP).
- Repérez la ligne : $table_prefix = ‘wp_’
- Remplacez par un préfixe aléatoire : $table_prefix = ‘m7x9k_’ (utilisez ce générateur pour créer une chaîne unique).
- Mettez à jour les tables existantes :
- Dans phpMyAdmin, exécutez cette requête (remplacez m7x9k_ par votre nouveau préfixe) :
RENAME table `wp_commentmeta` TO `m7x9k_commentmeta` RENAME table `wp_comments` TO `m7x9k_comments` RENAME table `wp_links` TO `m7x9k_links` RENAME table `wp_options` TO `m7x9k_options` RENAME table `wp_postmeta` TO `m7x9k_postmeta` RENAME table `wp_posts` TO `m7x9k_posts` RENAME table `wp_termmeta` TO `m7x9k_termmeta` RENAME table `wp_terms` TO `m7x9k_terms` RENAME table `wp_term_relationships` TO `m7x9k_term_relationships` RENAME table `wp_term_taxonomy` TO `m7x9k_term_taxonomy` RENAME table `wp_usermeta` TO `m7x9k_usermeta` RENAME table `wp_users` TO `m7x9k_users`
- Pour les plugins qui ont leurs propres tables (WooCommerce, etc.), utilisez cette requête pour les lister :
SHOW TABLES LIKE ‘wp_%’
Puis renommez-les manuellement avec le même préfixe.
- Dans phpMyAdmin, exécutez cette requête (remplacez m7x9k_ par votre nouveau préfixe) :
- Mettez à jour les options WordPress :
- Exécutez ces deux requêtes pour corriger les références internes :
UPDATE `m7x9k_options` SET `option_name` = ‘m7x9k_user_roles’ WHERE `option_name` = ‘wp_user_roles’ UPDATE `m7x9k_usermeta` SET `meta_key` = ‘m7x9k_capabilities’ WHERE `meta_key` = ‘wp_capabilities’
- Exécutez ces deux requêtes pour corriger les références internes :
Vérification :
- Connectez-vous à votre admin WordPress : si tout fonctionne, le changement est réussi.
- Vérifiez dans phpMyAdmin que toutes les tables ont bien le nouveau préfixe.
Erreurs fréquentes et solutions :
- Erreur 404 après connexion : Vous avez oublié de mettre à jour une table. Vérifiez avec SHOW TABLES LIKE ‘wp_%’ et renommez les tables restantes.
- Site en maintenance : Un plugin a ses propres tables non renommées. Désactivez-le temporairement via FTP (renommez son dossier dans /wp-content/plugins/).
- Requêtes SQL bloquées : Votre hébergeur limite phpMyAdmin. Utilisez Adminer (plus léger) ou contactez le support.
Étape 2 : Limiter les accès à la base de données via .htaccess
Objectif : Bloquer les accès directs aux fichiers sensibles et restreindre l’accès à phpMyAdmin.
- Protéger wp-config.php :
- Éditez votre fichier .htaccess (à la racine de WordPress).
- Ajoutez ce code au début du fichier :
order allow,deny deny from all
- Restreindre l’accès à phpMyAdmin :
- Si votre phpMyAdmin est accessible via une URL comme votresite.com/phpmyadmin, ajoutez :
AuthType Basic AuthName »Accès restreint » AuthUserFile /chemin/vers/.htpasswd Require valid-user
- Générez un fichier .htpasswd avec cet outil et uplodez-le hors de la racine web (ex: /home/votrenom/.htpasswd).
- Si votre phpMyAdmin est accessible via une URL comme votresite.com/phpmyadmin, ajoutez :
- Bloquer les injections SQL basiques :
- Ajoutez ces règles à la fin de votre .htaccess :
# Bloquer les requêtes suspectes RewriteEngine On RewriteCond %{QUERY_STRING} (|%3E|%3C|%27|%22|%5C|%20|%0A|%0D|%0B|%09) [NC,OR] RewriteCond %{QUERY_STRING} (SELECT|INSERT|UPDATE|DELETE|DROP) [NC] RewriteRule .* – [F,L]
- Ajoutez ces règles à la fin de votre .htaccess :
Vérification :
- Essayez d’accéder directement à votresite.com/wp-config.php : vous devriez avoir une erreur 403.
- Testez une requête SQL basique dans l’URL (ex: ?s=1′ OR ‘1’=’1) : le site doit bloquer la requête.
Erreurs fréquentes et solutions :
- Erreur 500 après modification : Syntax error dans le .htaccess. Vérifiez les guillemets et les balises avec cet outil de validation.
- phpMyAdmin inaccessible : Mauvais chemin dans la directive Directory. Utilisez le chemin absolu (demandez-le à votre hébergeur).
- Plugins qui ne fonctionnent plus : Certains plugins (cache, sécurité) modifient le .htaccess. Désactivez-les temporairement pendant vos tests.
Étape 3 : Créer un utilisateur MySQL dédié avec des permissions minimales
Objectif : Éviter d’utiliser le compte »root » MySQL qui a tous les droits. Un utilisateur dédié limite les dégâts en cas de fuite.
- Créez un nouvel utilisateur :
- Dans phpMyAdmin → onglet »Utilisateurs » → »Ajouter un utilisateur ».
- Choisissez :
- Nom d’utilisateur : wp_user_votresite (personnalisez)
- Hôte : localhost (ou l’IP de votre serveur si différent)
- Mot de passe : générez-en un fort (20+ caractères) avec Bitwarden.
- Attribuez des permissions précises :
- Dans phpMyAdmin, sélectionnez votre base de données → onglet »Privilèges » → »Ajouter un utilisateur à la base de données ».
- Cochez uniquement ces permissions :
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES
- Ne cochez surtout pas : GRANT, SUPER, FILE, PROCESS.
- Mettez à jour wp-config.php :
- Ouvrez wp-config.php et modifiez ces lignes :
define(‘DB_USER’, ‘wp_user_votresite’) define(‘DB_PASSWORD’, ‘votre_mot_de_passe_généré’)
- Ouvrez wp-config.php et modifiez ces lignes :
Vérification :
- Rechargez votre site : il doit fonctionner normalement.
- Dans phpMyAdmin, connectez-vous avec le nouvel utilisateur : vous ne devriez pas voir les autres bases de données.
Erreurs fréquentes et solutions :
- Erreur de connexion à la base : Mauvais mot de passe ou nom d’utilisateur. Vérifiez les guillemets dans wp-config.php.
- Impossible de créer des tables : Permission CREATE manquante. Retournez dans phpMyAdmin pour l’ajouter.
- Plugins qui demandent plus de permissions : Certains plugins (comme des sauvegardes) nécessitent LOCK TABLES. Ajoutez-la si besoin.
Étape 4 : Chiffrer les données sensibles avec des clés de sécurité uniques
Objectif : Protéger les mots de passe et cookies des utilisateurs avec un chiffrement fort.
- Générez des clés de sécurité :
- Rendez-vous sur le générateur officiel WordPress.
- Copiez le bloc de 8 lignes généré (exemple) :
define(‘AUTH_KEY’, ‘…’) define(‘SECURE_AUTH_KEY’, ‘…’) define(‘LOGGED_IN_KEY’, ‘…’) define(‘NONCE_KEY’, ‘…’) define(‘AUTH_SALT’, ‘…’) define(‘SECURE_AUTH_SALT’, ‘…’) define(‘LOGGED_IN_SALT’, ‘…’) define(‘NONCE_SALT’, ‘…’)
- Remplacez les clés existantes :
- Dans wp-config.php, repérez la section »Clés uniques d’authentification ».
- Remplacez tout le bloc par les nouvelles clés (sans modifier les define).
- Forcez le rechiffrement des cookies :
- Ajoutez cette ligne pour déconnecter tous les utilisateurs (ils devront se reconnecter) :
define(‘FORCE_SSL_ADMIN’, true) // Force HTTPS dans l’admin @ini_set(‘session.cookie_secure’, true) // Cookies en HTTPS seulement
- Ajoutez cette ligne pour déconnecter tous les utilisateurs (ils devront se reconnecter) :
Vérification :
- Déconnectez-vous puis reconnectez-vous : la session doit être sécurisée (icône 🔒 dans la barre d’URL).
- Vérifiez dans les outils développeurs (F12 → onglet »Application » → »Cookies ») que les cookies ont l’attribut Secure.
Erreurs fréquentes et solutions :
-
Étape 5 : Sauvegarder régulièrement la base de données
Objectif : Prévenir les pertes de données en cas de faille ou d’attaque. Utilisez un plugin dédié (comme UpdraftPlus) ou configurez des sauvegardes automatiques via un outil comme WP-CLI. Stockez les sauvegardes hors du serveur (cloud, NAS) et vérifiez leur intégrité périodiquement.
Étape 6 : Activer le chiffrement SSL/TLS
Objectif : Protéger les échanges entre le serveur et les utilisateurs. Installez un certificat SSL (Let’s Encrypt) et forcez son utilisation en ajoutant dans wp-config.php :
define(‘FORCE_SSL_ADMIN’, true) pour l’interface d’administration, et @ini_set(‘session.cookie_secure’, true) pour les cookies. Vérifiez ensuite que l’URL commence par https://.
Étape 7 : Surveiller les activités suspectes
Objectif : Détecter les intrusions précocement. Utilisez des plugins comme Wordfence ou Sucuri pour analyser les requêtes SQL, les tentatives de connexion et les modifications de fichiers. Configurez des alertes pour les activités anormales (ex : requêtes massives).
En suivant ces étapes, votre base de données WordPress sera protégée contre les vulnérabilités courantes. N’oubliez pas de mettre à jour régulièrement WordPress, les plugins et les thèmes pour combler les failles connues.
Si vous avez besoin d’aide, contactez un webmaster sérieux qui va vous aider dans vos tâches de site internet. Voici le numéro de téléphone : 09 77 29 09 69
Et n’oubliez pas : une bonne gestion comptable, c’est la clé d’une boutique prospère. Alors, prêt à prendre les commandes de vos finances ? 🚀
Merci pour ce guide détaillé ! J’ai toujours eu peur de me faire pirater, mais là je me sens prêt à sécuriser ma base de données WordPress.