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

Mention d'affiliation v3.1
Mention d'affiliation v3.2 (mobile)

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/users

2️⃣ Les identifiants exposés par wp-json

  • ↪️ Pourquoi bloquer : users 401 · visible aussi sur la page d'auteur

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

  • ↪️ Enregistrement dans l'éditeur de blocs · 0 outil MCP

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 administrateursPour quel site
Par défaut (activé)Identifiants exposésEnregistré—
Désactiver pour les non-administrateurs401Échec de l'enregistrementSites sans compte auteur ni contributeur
Désactiver lorsque vous êtes déconnecté401Enregistré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)

  • ↪️ Où le régler · vérifier la réponse 401

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].

Réglages → Perfmatters → Générale dans WordPress (API REST de WordPress)
Perfmatters Disable REST API: Disable When Logged Out

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é)

Perfmatters settings simulator: General → Core
Simulateur de réglages Perfmatters · Avis et guide Perfmatters

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.

🔌 Une même requête, deux réponses GET /wp-json/wp/v2/users
Site non bloqué
200
Même un visiteur non connecté peut voir les identifiants.
[
  {
    "id": 1,
    "name": "User A",
    "slug": "user_a",
    "link": "https://example.com/author/user_a/"
  }
]
Site en [Désactiver lorsque vous êtes déconnecté]
401
Une requête sans connexion reçoit une réponse 401 avec un message.
{
  "code": "rest_authentication_error",
  "message": "Sorry, you do not have permission to make REST API requests.",
  "data": { "status": 401 }
}
slug Par défaut, le slug reprend tel quel l'identifiant de connexion.
À gauche, seuls les quatre champs id, name, slug et link de la réponse sont repris, et le nom est un exemple (user_a).


5️⃣ Mettre une exception sur un chemin bloqué

  • ↪️ Chemin MCP en exception · différence avec la suppression des liens de l'API REST

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.

🚦 L'ordre que suit une requête
Avant l'exception · requête MCP
Requête envoyée par le connecteur MCP de claude.ai après l'authentification, en [Désactiver lorsque vous êtes déconnecté].
Perfmatters
Bloquée (401)
→↓
Vérification du jeton MCP
Jamais atteinte
→↓
Résultat
0 outil
Après l'exception · requête MCP
/mcp/mcp-oauth-server est ajouté comme chemin aux exceptions de Perfmatters.
Perfmatters
Passe comme chemin d'exception
→↓
Vérification du jeton MCP
MCP vérifie lui-même
→↓
Résultat
Sans jeton : 401
[MCP authentication required.]
Après l'exception · /wp-json/wp/v2/users
Les chemins qui ne figurent pas dans les exceptions restent bloqués.
Perfmatters
Bloquée (401)
→↓
Résultat
Identifiants toujours masqués
⚠️ Perfmatters bloque la requête avant que MCP ne vérifie le jeton.

[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

xmlrpc.php est une autre adresse que l'API REST : il continue de répondre même si l'API REST est bloquée. Sur le site de test, 734 requêtes POST vers xmlrpc.php ont été enregistrées pour la seule journée du 8 octobre 2026 ; dans Perfmatters, vous le bloquez avec [Désactiver le XML-RPC], dans la même section [Core].

WP Rocket place les adresses /wp-json/ dans sa liste d'exclusion du cache : les réponses de l'API REST changent donc dès l'enregistrement. Les réglages qui modifient le HTML de la page, comme [Supprimer les liens de l'API REST], ne s'appliquent qu'après avoir vidé le cache.

Non. L'éditeur de blocs de WordPress envoie ses requêtes à l'API REST pour enregistrer les articles, et les connecteurs MCP qui relient des outils d'IA comme claude.ai utilisent aussi des chemins sous /wp-json/.

ℹ️ 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 9   +   4   =