API REST de WordPress : pourquoi ne bloquer que les visiteurs déconnectés plutôt que tout désactiver

L'API REST de WordPress montre les identifiants des comptes du site à l'adresse wp-json, même aux visiteurs qui ne sont pas connectés. La désactiver complètement peut faire échouer l'enregistrement dans l'éditeur de blocs : voici comment bloquer seulement les requêtes des visiteurs déconnectés et le vérifier avec la réponse 401.
1️⃣ L'API REST de WordPress : l'adresse wp-json et son rôle
L'API REST de WordPress est une fonction intégrée de WordPress qui échange les données du site, comme les articles, les pages et les comptes, au format JSON ; elle répond sous /wp-json/, après l'adresse du site.
Sous /wp-json/, les adresses se répartissent par type de données, comme [wp/v2/posts], [wp/v2/pages] et [wp/v2/users] ; chacune de ces adresses s'appelle un point de terminaison (endpoint). L'éditeur de blocs envoie lui aussi ses requêtes à ces adresses quand il enregistre un article.
https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users2️⃣ Les identifiants exposés par wp-json
Le point de terminaison [wp/v2/users] renvoie, pour chaque compte ayant publié des articles, le nom affiché et la valeur slug ; par défaut, le slug reprend tel quel l'identifiant de connexion. Sur le site de test https://testpilotweb.com/, le compte administrateur avait lui aussi le même slug que son identifiant de connexion.
Une fois l'identifiant de connexion connu, il ne reste à un attaquant qu'à trouver le mot de passe ; l'écran de connexion WordPress du site de test a d'ailleurs enregistré 2 570 tentatives par force brute pour la seule journée du 7 octobre 2026.
Même si cette adresse est bloquée, le même identifiant reste visible dans l'adresse de la page d'auteur (/author/identifiant/).
3️⃣ Ce qui casse si on la désactive complètement
Si vous désactivez toute l'API REST de WordPress, c'est d'abord l'enregistrement des articles dans l'éditeur de blocs qui échoue ; c'est pourquoi Perfmatters, une des extensions d'optimisation de WordPress, découpe lui aussi la désactivation en deux niveaux : [Désactiver pour les non-administrateurs] et [Désactiver lorsque vous êtes déconnecté]. Sur un site qui a des comptes auteur ou contributeur, [Désactiver pour les non-administrateurs] bloque aussi l'enregistrement de leurs articles.
Même sur un site qui ne bloquait que les visiteurs déconnectés, un connecteur MCP relié à claude.ai affichait 0 outil après l'authentification. Le journal du serveur montrait toutes les requêtes MCP en 401 : Perfmatters bloquait la requête avant que MCP ne vérifie le jeton.
| Valeur de [Désactiver l'API REST] | Adresse users pour un visiteur déconnecté | Enregistrement par les comptes non administrateurs | Pour quel site |
|---|---|---|---|
| Par défaut (activé) | Identifiants exposés | Enregistré | — |
| Désactiver pour les non-administrateurs | 401 | Échec de l'enregistrement | Sites sans compte auteur ni contributeur |
| Désactiver lorsque vous êtes déconnecté | 401 | Enregistré | Sites avec des comptes auteur ; pour les connexions par jeton comme MCP, ajouter un chemin d'exception |
4️⃣ Bloquer seulement les visiteurs déconnectés (Perfmatters)
Dans l'administration WordPress, sous [Réglages] → [Perfmatters] → [Générale], passez [Désactiver l'API REST] de la section [Core] à [Désactiver lorsque vous êtes déconnecté], puis cliquez sur [Enregistrer les modifications].


Langues de Perfmatters : anglais (par défaut), coréen, allemand, français, italien, néerlandais, portugais (Brésil), russe, ukrainien, turc, bulgare, hongrois, indonésien, persan, chinois (simplifié)

Si vous ouvrez /wp-json/wp/v2/users dans une fenêtre de navigation privée, sans être connecté, une réponse 401 revient avec le message [Sorry, you do not have permission to make REST API requests.], tandis que l'éditeur de blocs, en session connectée, continue d'enregistrer les articles.
[
{
"id": 1,
"name": "User A",
"slug": "user_a",
"link": "https://example.com/author/user_a/"
}
]
{
"code": "rest_authentication_error",
"message": "Sorry, you do not have permission to make REST API requests.",
"data": { "status": 401 }
}
5️⃣ Mettre une exception sur un chemin bloqué
Pour n'ouvrir qu'un chemin précis alors que le blocage est actif, ajoutez ce chemin au filtre [perfmatters_rest_api_exceptions] de Perfmatters. Le problème des 0 outil du connecteur MCP de claude.ai a été résolu en créant un snippet PHP dans le menu [Code] de Perfmatters, avec le seul chemin MCP en exception.
add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
$exceptions[] = '/mcp/mcp-oauth-server';
return $exceptions;
});Même après l'exception, MCP bloque lui-même les requêtes sans jeton avec le message [MCP authentication required.] et une réponse 401, et /wp-json/wp/v2/users continue de renvoyer la réponse 401 de Perfmatters.
[MCP authentication required.]
[Supprimer les liens de l'API REST], dans la même section [Core], ne retire que le lien api.w.org de l'en-tête de la page et des en-têtes de réponse ; l'API REST de WordPress elle-même continue de répondre.
🔢 FAQ & contenus recommandés
MCP
WP Rocket MCP Server
Comment relier des outils d'IA pour vider le cache et modifier les réglages à la place de l'écran d'administration.
Sécurité
Wordfence vs iThemes Security
Comparatif de deux extensions de sécurité qui bloquent les attaques par force brute et les logiciels malveillants.
ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.