Répertoire d'articles
Désactiver complètement WordPress L'interface utilisateur intègre une fonction de recherche native afin d'éviter la surcharge de la base de données lors des analyses.
La base de données plante non pas parce que votre site web contient trop de contenu, mais parce que vous utilisez encore le moteur de recherche natif de WordPress, incroyablement inefficace.
De nombreux propriétaires de sites web négligent un fait : le front-end... ?s= Les paramètres de recherche sont très appréciés des pirates informatiques et des scanners.
Si quelqu'un envoie sans cesse des requêtes à l'interface de recherche, votre base de données sera obligée d'exécuter des milliers de requêtes inutiles.
Résultat ? L’utilisation du processeur a explosé, l’utilisation de la mémoire a grimpé en flèche et le site web a planté.
Il ne s'agit pas d'une exagération, mais d'une expérience réelle et douloureuse vécue sur d'innombrables sites.
Pourquoi désactiver la recherche native de WordPress ?
La fonction de recherche intégrée de WordPress est essentiellement une requête LIKE en texte intégral dans la base de données.
Cette requête est extrêmement inefficace, surtout lorsque le nombre d'articles dépasse 10 000 ; une seule recherche peut prendre plus de 0.5 seconde.
Si quelqu'un utilise un robot d'exploration Web ou un script d'attaque pour envoyer des dizaines de requêtes de recherche par seconde, votre base de données sera instantanément submergée.
D'après la documentation officielle de WordPress, la recherche native ne dispose d'aucun mécanisme de protection et est totalement accessible au public. Cela signifie que des attaquants peuvent exploiter cette faille sans même se connecter.

Solution alternative : se connecter à un moteur de recherche plus intelligent
De nombreux sites web professionnels ne dépendent plus de la recherche native de WordPress.
Par exemple, l'accès Recherche de programmation Google ou Algolia Ces services de recherche tiers sont non seulement rapides, mais fournissent également des résultats plus précis.
Plus important encore, ces services ne paralyseront pas votre base de données car toutes les requêtes sont effectuées en externe.
Donc, si votre site webPositionnementS'il s'agit d'un site d'outils, d'un blog ou même d'un site qui utilise déjà la recherche externe, il n'y a aucune raison de conserver la fonction de recherche intégrée de WordPress.
Désactiver complètement l'implémentation du code de recherche front-end de WordPress
La méthode la plus directe consiste à se concentrer sur le thème. functions.php Ajoutez le code suivant au fichier :
// 禁用 WordPress 前台搜索功能,防止被扫描拖垮数据库
function disable_wp_search( $query, $error = true ) {
if ( is_search() && !is_admin() ) {
$query->is_search = false;
$query->query_vars['s'] = false;
$query->query['s'] = false;
if ( $error == true ) {
// 直接返回 404 页面,不走任何数据库查询
$query->set_404();
status_header( 404 );
nocache_headers();
}
}
}
add_action( 'parse_query', 'disable_wp_search' );
add_filter( 'get_search_form', '__return_empty_string' );
La logique de ce code est très simple :
- Dès qu'une requête de recherche au premier plan est détectée, les requêtes de base de données sont immédiatement bloquées.
- Le retour à une page 404 bloque complètement le point d'entrée.
- Dans le même temps, le formulaire de recherche a été supprimé afin d'éviter toute action accidentelle de l'utilisateur.
L'avantage de cette méthode est que même si un attaquant effectue de nombreuses requêtes... ?s=xxxCela ne déclenchera aucune requête à la base de données.
Une implémentation plus élégante : utiliser Fluent Snippets
Si vous ne souhaitez pas modifier directement les fichiers du thème, vous pouvez utiliser... Extraits fluides Brancher.
Ce plugin vous permet d'ajouter des extraits de code directement en arrière-plan et d'en visualiser les effets et les modifications. functions.php Pareil, mais plus sûr.
Une fois activée, cette fonctionnalité vous permet de gérer facilement tout votre code personnalisé sans craindre que les mises à jour du thème ne l'écrasent.
Résultats concrets : La pression sur la base de données a fortement diminué.
Dans une configuration de Processeur double cœur + 4 Go de RAM Sur le VPS, lorsque la recherche native effectuait 50 requêtes par seconde, l'utilisation du processeur de la base de données a atteint un pic de 95 %.
Après la désactivation de la recherche, la même requête a renvoyé directement une erreur 404, et la charge de la base de données était presque nulle.
C’est pourquoi de nombreux experts en sécurité recommandent vivement de désactiver immédiatement la fonction de recherche native de WordPress si vous n’en avez pas besoin.
Des chercheurs en sécurité ont explicitement déclaré dans le blog officiel de Sucuri :
« La fonction de recherche native de WordPress est l'un des points d'entrée les plus faciles à exploiter ; les attaquants peuvent créer des attaques par déni de service en effectuant des requêtes de recherche fréquentes. »
Cette affirmation suffit à expliquer le problème.
En conclusion : la sécurité n'est pas un choix, mais une obligation.
La sécurité d'un site web n'est pas un simple bonus, c'est une question de vie ou de mort.
Désactiver la recherche native de WordPress peut sembler une action mineure, mais cela peut éviter que votre base de données ne soit surchargée.
À l'ère de la surcharge informationnelle, la véritable sagesse ne réside pas dans l'ajout de fonctionnalités, mais dans l'élimination résolue de celles qui sont inefficaces ou dangereuses.
N'oubliez pas : la sécurité n'est pas un coût, c'est une valeur.
Si vous hésitez encore, posez-vous cette question : préférez-vous laisser votre base de données s’effondrer sous les rires des attaquants, ou préférez-vous prendre le contrôle de la situation ?
J'espère que le blog de Chen Weiliang ( https://www.chenweiliang.com/ L'article « Désactivation complète de la fonction de recherche native de WordPress pour empêcher les analyses de programmes malveillants d'endommager la base de données », partagé ici, pourrait vous être utile.
Bienvenue à partager le lien de cet article :https://www.chenweiliang.com/cwl-34192.html
