La base de données de WordPress est comme un cerveau pour l’ensemble de votre site WordPress, car chaque information unique est stockée à cet endroit, ce qui en fait la cible préférée de pirate. Et les pirates exécutent des codes automatisés pour les injections SQL.
Eh bien, malheureusement, beaucoup de gens oublient de changer le préfixe de la base de données lorsqu’ils installent WordPress. Cela simplifie la tâche aux pirates car ils pourront planifier des attaques massives sur le prefixe « wp_ ». La façon la plus intelligente que vous pourrez pour protéger votre base de données se fera en changeant le préfixe de votre base de données qui est vraiment facile à faire durant l’installation.
Mais il faut quelques étapes pour changer le préfixe de la base de données sur WordPress surtout s’il est déjà en cours d’exécution.
Préparation
Nous vous recommandons de sauvegarder votre base de données de WordPress avant d’effectuer quoi que ce soit. Il est important de garder des sauvegardes quotidiennes de votre site, nous vous recommandons le plugin « BackupBuddy » pour le faire. La prochaine chose que nous vous recommandons de faire est de rediriger vos visiteurs vers une page de maintenance temporaire.
Modifier le fichier wp-config.php
Ouvrez votre fichier « wp-config.php » qui est situé à la racine de votre hébergement WordPress. Modifiez la ligne du préfix de la table de la base de données avec « wp_a123456_ » ou tout autre expression de votre choix que vous trouverez complexe (sans caractère spéciale).
Cette ligne devrait ressembler à quelque chose de similaire à ceci:
$table_prefix = 'wp_a123456_';
Changer tous les noms des tables de la base de données
Vous devez accéder à votre base de données (très probablement par phpMyAdmin), puis changer les noms de table pour celui que nous avons spécifié dans le fichier wp-config.php. Si vous utilisez un hébergement avec un cPanel, vous pouvez trouver le lien de phpMyAdmin dans votre cPanel, unpeu comme dans l’image qui suit :
Il y a un total de 11 tables de WordPress par défaut, changer tout cela manuellement sera assez pénible.
Voilà pourquoi pour rendre les choses plus rapides, nous avons une requête SQL que vous pouvez utiliser.
RENAME table `wp_commentmeta` TO `wp_a123456_commentmeta`; RENAME table `wp_comments` TO `wp_a123456_comments`; RENAME table `wp_links` TO `wp_a123456_links`; RENAME table `wp_options` TO `wp_a123456_options`; RENAME table `wp_postmeta` TO `wp_a123456_postmeta`; RENAME table `wp_posts` TO `wp_a123456_posts`; RENAME table `wp_terms` TO `wp_a123456_terms`; RENAME table `wp_termmeta` TO `wp_a123456_termmeta`; RENAME table `wp_term_relationships` TO `wp_a123456_term_relationships`; RENAME table `wp_term_taxonomy` TO `wp_a123456_term_taxonomy`; RENAME table `wp_usermeta` TO `wp_a123456_usermeta`; RENAME table `wp_users` TO `wp_a123456_users`;
Vous devrez peut-être ajouter des lignes pour d’autres plugins qui peuvent ajouter leurs propres tables sur votre base de données WordPress. L’idée est de changer tous les préfixes des tables pour ce que vous voulez.
Modification sur la table « options »
Nous devons rechercher des options qui utilisent encore « wp_ » comme préfixe, afin de le remplacer. Pour faciliter le processus, utilisez cette requête:
SELECT * FROM `wp_a123456_options` WHERE `option_name` LIKE '%wp_%'
Ceci renvoie beaucoup de résultats, et vous avez besoin d’aller un par un pour changer ces lignes.
Table des métas utilisateurs
Ensuite, il faut chercher des métas d’utilisateur qui utilisent également le préfixe « wp_ », afin de le remplacer. Utilisez cette requête SQL afin de faire cela rapidement :
SELECT * FROM `wp_a123456_usermeta` WHERE `meta_key` LIKE '%wp_%'
Le nombre d’entrées peut varier avec le nombre de plug-ins que vous utilisez. Il suffit de changer tout ce qui a « wp_ » avec le nouveau préfixe.
C’est tout pour ce tutoriel, j’espère qu’il vous permettra de changer le prefix des tables de votre installation WordPress facilement.
Bonjour, dans la requête suivante par exemple que vous préconisez afin de faire ressortir tous les préfixes ‘wp_’ :
SELECT * FROM `wp_a123456_usermeta` WHERE `meta_key` LIKE ‘%wp_%’
il y a le caractère % devant ‘wp’ ce qui indique que le préfixe se trouverait au milieu de l’expression. Ce qui en fin de compte n’en fait plus un préfixe. Car j’ai trouvé au moins un champ de la table avec les caractères ‘wp_’ au milieu du nom du champs. Faut-il le modifier aussi ?
Sinon, j’ai réalisé toutes vos instructions à la lettre, en tenant compte de ma remarque précédente, mais cela, ne fonctionne pas en tenant compte des 2 cas. Auriez-vous d’autres conseils ?
Bonjour,
désolé pour le retard. Il est de coutume de modifier toutes les occurences de « wp_ » sur la colonne des clés. Très rarement vous verrez des développeurs qui enregistrent leurs données avec cette clés pour leurs plugins. Je ne sais pas si les fonctions régulières (regex) fonctionnent sur la base de données, mais toutes les recherches que nous faisons avec la requête SQL sont toujours entourée de « % », quant a savoir si la recherche commence par le début de la chaîne ou par la fin, je ne pense pas (à moins que je me trompe) que cela puisse être contrôlable via MySQL.
Si dans votre cas, ça ne fonctionne pas correctement, alors il y a probablement une étape qui a été sautée. Pouvez vous nous dire exactement en quoi ça ne fonctionne pas ? Merci.