
🔒 Comment désactiver l'API REST dans WordPress : 4 méthodes 2026
Qu'est-ce que l'API REST et pourquoi la désactiver
L'API REST de WordPress est une interface intégrée par laquelle des applications externes lisent et modifient les données du site. Les requêtes sont envoyées vers /wp-json/, la réponse revient au format JSON. Elle est apparue dans WordPress 4.7 et est activée par défaut sur chaque site depuis.
C'est pratique pour les développeurs: applications mobiles, architecture headless, intégrations avec des services tiers. Mais si vous n'utilisez rien de tout cela, une API REST ouverte reste une brèche. Zéro bénéfice, des risques bien réels.
Menaces spécifiques:
- Énumération d'utilisateurs. Via
/wp-json/wp/v2/users, n'importe qui peut obtenir une liste de noms d'utilisateurs. Étape suivante, le brute-force des mots de passe. - Aspiration de contenu. Les articles via
/wp-json/wp/v2/postssont aspirés automatiquement et republiés sur d'autres sites. - Charge inutile. Chaque requête REST passe par le cycle WordPress complet. Mille robots par minute, et le site tombe.
Voici quatre méthodes pour verrouiller l'API REST: d'un plugin en un clic à un blocage au niveau serveur. Choisissez celle qui correspond à votre situation.
💡 Aperçu rapide:
- Installer le plugin Disable WP REST API: plus de 30 000 installations actives, aucun réglage, fonctionne immédiatement après activation.
- Configurer la restriction dans Solid Security: si un plugin de sécurité est déjà sur le site, le bouton pour l'API REST se trouve dans la section Avancé.
- Ajouter du code dans functions.php: pour ceux qui ne veulent pas d'un plugin séparé pour un seul filtre, un extrait utilisant
rest_authentication_errors. - Ajouter une règle dans.htaccess: un blocage au niveau du serveur Apache, une méthode radicale sans exceptions.
Méthode 1: le plugin Disable WP REST API, en un clic
La méthode la plus simple et la plus sûre. Le plugin Disable WP REST API sur WordPress.org fait exactement une chose: il ferme l'API REST à toute personne non connectée à l'administration. Les utilisateurs authentifiés travaillent comme d'habitude, l'éditeur de blocs, les autres plugins, tout fonctionne.
Installation: Extensions → Ajouter, recherchez «Disable WP REST API», installez et activez. Le plugin pèse 4 Ko et commence à fonctionner immédiatement. Il n'y a aucun réglage.
Vérification: déconnectez-vous de l'administration et ouvrez https://вашсайт.ru/wp-json/ dans votre navigateur. Vous verrez le message: {"code":"rest_login_required","message":"REST API restricted to authenticated users.","data":{"status":401}}. Cela signifie que l'API REST est fermée aux requêtes externes.
L'auteur du plugin, Jeff Starr, a 15 ans d'expérience avec WordPress et est l'auteur de plusieurs livres sur le sujet. Le code est ouvert, le plugin est mis à jour régulièrement: en juillet 2026, version 2.6.8, testé jusqu'à WordPress 7.0.2.
Avantages:
- L'installation prend une minute, aucun réglage
- 4 Ko de code, n'affecte pas la vitesse du site
- Ne touche pas à l'administration ni à l'éditeur de blocs
- Plus de 30 000 installations actives, note de 4,8 sur WordPress.org
Inconvénients:
- Bloque uniquement les utilisateurs non authentifiés, un utilisateur connecté voit toute l'API REST
- Pas de réglages granulaires dans la version gratuite (la version Pro, REST Pro Tools, ajoute le filtrage par rôle et par IP)
Prix: Gratuit. Version Pro, REST Pro Tools, sur le site du développeur.
Téléchargement: 🔗 Disable WP REST API sur WordPress.org
Méthode 2: Restriction via Solid Security
Si vous avez déjà Solid Security (anciennement iThemes Security) installé, vous n'avez pas besoin d'un plugin séparé pour l'API REST. Les paramètres de sécurité incluent un bouton prêt à l'emploi.
Chemin: Sécurité → Réglages → Avancé → WordPress REST API. Dans le menu déroulant, sélectionnez «Restricted Access», l'API REST ne sera disponible que pour les utilisateurs authentifiés.

Vérifiez aussi le réglage XML-RPC dans la même section. Si vous n'utilisez pas l'application mobile WordPress et ne connectez pas Jetpack, désactivez-le aussi. Deux interfaces rarement nécessaires mais souvent attaquées.
Avantages:
- Pas de plugin séparé nécessaire, la fonctionnalité est déjà intégrée à Solid Security
- Interface avec des explications, pas besoin de toucher au code
- Le XML-RPC est configuré en même temps
Inconvénients:
- Fonctionne uniquement si vous utilisez déjà Solid Security (l'installer juste pour cela est disproportionné)
- La version gratuite ferme complètement l'API REST pour les utilisateurs non authentifiés, sans exceptions pour des endpoints individuels
Téléchargement: 🔗 Solid Security sur WordPress.org
Méthode 3: Code dans functions.php, sans plugins
Si vous ne voulez pas installer un plugin pour un seul filtre, voici un extrait qui fait la même chose. Ajoutez-le au functions.php de votre thème enfant ou via le plugin Code Snippets.
Sauvegardez votre site avant toute modification. Une erreur dans functions.php provoque l'écran blanc de la mort, et sans accès administrateur vous devrez la corriger via FTP.
1 /** 2 * Close REST API for unauthorized users. 3 * Authorized users work with API as usual. 4 */ 5 add_filter('rest_authentication_errors', function($access) { 6 if (! is_user_logged_in()) { 7 return new WP_Error( 8 'rest_forbidden', 9 __('REST API restricted to authenticated users.', 'textdomain'), 10 array('status' => 403) 11 ); 12 } 13 return $access; 14 });
Ce qui se passe ici. Le filtre rest_authentication_errors se déclenche à chaque requête REST. is_user_logged_in() vérifie si le visiteur est connecté. Si ce n'est pas le cas, une WP_Error avec le code 403 est retournée, et WordPress empêche la requête d'aller plus loin. Si l'utilisateur est connecté, l'API fonctionne sans restrictions.
Après avoir ajouté le code, vérifiez le résultat: ouvrez /wp-json/ en mode navigation privée. Une erreur 403 doit être retournée.
Important. L'ancien filtre rest_enabled a été supprimé du cœur de WordPress. Les extraits avec add_filter('rest_enabled', '_return_false'), que l'on trouve dans d'anciens tutoriels, ne fonctionnent plus à partir de WordPress 5.0. Utilisez uniquement rest_authentication_errors.
Méthode 4: Blocage via.htaccess, au niveau serveur
Une méthode radicale. Une règle dans .htaccess bloque les requêtes vers /wp-json/ avant même que WordPress ne démarre. Le serveur Apache retourne une 403 sans jamais atteindre PHP.
Convient lorsque:
- L'API REST n'est absolument pas nécessaire sous aucune forme, ni par vous ni par les plugins;
- le serveur tourne sous Apache (pour Nginx la règle s'écrit via un bloc
location); - vous êtes à l'aise avec l'édition de la configuration serveur.
Ajoutez au fichier .htaccess à la racine du site:
1 <IfModule mod_rewrite.c> 2 RewriteEngine On 3 RewriteCond %{REQUEST_URI} ^/wp-json/ [NC] 4 RewriteRule .* - [F] 5 </IfModule>
La règle se déclenche sur toute URL commençant par /wp-json/. Le drapeau [F] signifie 403 Forbidden, le drapeau [NC] rend la comparaison insensible à la casse.
Faites impérativement une copie de .htaccess avant de modifier. Une erreur de syntaxe met tout le site hors service avec une erreur 500.
Le principal inconvénient de cette approche: toutes les requêtes REST sont bloquées sans exception. Si un formulaire de contact cesse de fonctionner après la modification (Contact Form 7 utilise l'API REST), revenez à la méthode 1 ou 3.
Regardez un aperçu de 6 minutes des risques de l'API REST par David McAllen: il montre de vraies requêtes vers /wp-json/ et démontre les deux plugins en action.
⁉️🤔 FAQ
Dois-je désactiver l'API REST sur chaque site?
Non. Si vous utilisez l'application mobile WordPress, l'éditeur de blocs (Gutenberg), ou des plugins comme Contact Form 7 et WooCommerce, ils ont besoin de l'API REST. Dans ce cas, il vaut mieux ne pas la désactiver complètement mais configurer une restriction basée sur les rôles.
Vous devriez désactiver l'API REST sur les sites où elle n'est pas utilisée intentionnellement: blogs sur l'éditeur classique, pages d'atterrissage, sites vitrine. Sur de tels projets, un
/wp-json/ouvert n'offre que des risques. Deux minutes pour installer le plugin Disable WP REST API, et le vecteur d'attaque est fermé.
Comment vérifier que l'API REST est effectivement désactivée?
Ouvrez https://вашсайт.ru/wp-json/ dans votre navigateur en mode navigation privée (vous devez être déconnecté). Si vous voyez une erreur 401 ou 403, l'API REST est fermée. Si des données JSON s'affichent, la protection ne fonctionne pas, vérifiez vos réglages.
La ligne de commande fonctionne aussi:
curl -I https://вашсайт.ru/wp-json/wp/v2/users. Un code de réponse 200 signifie que la liste des utilisateurs est servie publiquement, un signal d'alarme, la protection doit être ajustée.
La désactivation de l'API REST va-t-elle casser l'éditeur de blocs?
Non, si vous utilisez les méthodes 1 à 3. Le plugin Disable WP REST API, Solid Security et l'extrait rest_authentication_errors laissent tous passer les utilisateurs authentifiés. L'éditeur de blocs fonctionne, puisque vous êtes connecté à l'administration.
La méthode 4 (.htaccess) est l'exception. Le blocage au niveau serveur coupe tout le monde sans distinction, et l'éditeur de blocs cessera de fonctionner. Si l'administration se casse après avoir modifié
.htaccess, revenez à la méthode 1 ou 3.
Qu'est-ce qui est le plus sûr: un plugin ou du code dans functions.php?
Du point de vue de la protection, les deux options sont équivalentes, elles utilisent le même mécanisme WordPress. La différence réside dans la commodité et la maintenance.
Le plugin Disable WP REST API se met à jour automatiquement, ne dépend pas du thème et ne disparaîtra pas si vous changez de template. Le code dans
functions.phpest pour ceux qui sont fondamentalement contre l'installation de plugins pour une seule fonction. Choisissez en fonction de votre approche d'administration, cela n'affecte pas la sécurité.
Puis-je fermer uniquement l'endpoint /users et laisser le reste ouvert?
Vous le pouvez, mais c'est une tâche de réglage fin. Les outils gratuits de cet article bloquent entièrement l'API REST pour les utilisateurs non authentifiés.
Si vous devez garder certains endpoints ouverts et en fermer d'autres, utilisez REST Pro Tools (la version Pro du plugin Disable WP REST API) ou le filtre
rest_endpointsdansfunctions.php. Vous devrez lister explicitement les routes autorisées, une tâche d'une demi-heure si vous connaissez la structure de l'API REST de WordPress.
Vous avez verrouillé l'API REST, quelle est la suite?
L'API REST n'est qu'un vecteur d'attaque parmi d'autres. En la fermant, vous avez supprimé le point d'entrée le plus facile pour les robots, mais cela ne remplace pas une protection à part entière.
En bref: la méthode 1 (le plugin Disable WP REST API) résout le problème en deux minutes. Installez-le, vérifiez /wp-json/ en navigation privée, assurez-vous que votre formulaire de contact fonctionne, c'est fait. Les risques sont réduits.
La couche suivante est un pare-feu et une protection contre le brute-force. Commencez avec la version gratuite de Solid Security: elle fermera l'API REST, le XML-RPC et le brute-force des mots de passe dans une seule interface. Quel plugin de sécurité vous utilisez, dites-le-nous dans les commentaires.


