Le XMLRPC de WordPress : qu’est-ce que c’est et pourquoi le désactiver ?
Dans ce billet, nous allons nous intéresser au XML RPC de WordPress :
- À quoi sert le Protocole XMLRPC ?
- Qu’en est-il du XMLRPC de WordPress ?
- XMLRPC est-il toujours d’actualité en 2022 ?
- Pourquoi et comment désactiver le XMLRPC de WordPress ?
Le protocole XML-RPC est-il autorisé sur l’infrastructure EasyHoster ?
Par défaut, nous bloquons les requêtes faites à /xmlrpc.php sur l’ensemble de notre infrastructure, mais lorsqu’un utilisateur peut formuler le réel besoin de ce protocole, nous pouvons sous conditions réactiver XML-RPC, au cas par cas et sur simple demande à notre support technique .
En effet, plus de 99% de nos utilisateurs n’ont pas besoin de XML-RPC. Par conséquent, laisser le protocole ouvert globalement exposerait l’ensemble de nos utilisateurs à une hausse de risques liés à la sécurité, ainsi qu’une charge sur leurs ressources d’hébergement (ainsi que sur les ressources de l’ensemble de nos serveurs web)… tout cela inutilement.
Cela dit, nous n’avons rien contre le fait d’activer XML-RPC au cas par cas lorsque cela est réellement justifié.
Autrement dit, nous ne désirons pas activer XML-RPC globalement et inutilement, mais lorsque cela est justifié et que certains de nos utilisateurs en formulent le besoin réel, nous n’avons rien contre le fait de réactiver leur accès pour le domaine concerné.
Pour aller dans le détail, commençons par une stricte définition du protocole XML RPC en lui-même.
Définition de XML RPC
XML-RPC est un protocole RPC, ce qui signifie Remote Procedure Call.
XML RPC se sert du protocole HTTP pour transférer des données, et de la norme XML pour la structuration des données.

Mais qu’en est-il du fichier xmlrpc.php de WordPress ?
↓
Le XML RPC et WordPress
Le XML-RPC a été créé bien avant le CMS WordPress. Il était utilisé dans le CMS de blogging B2evolution. Ce dernier a été forké par Automattic pour finalement, en 2003, devenir WordPress.
À l’origine, jusqu’à la version 3.5 de WordPress, le fichier XML-RPC était désactivé par défaut. Cependant, c’est à partir de la version 3.5 du CMS, qu’il a été activé par défaut. La raison de ce changement est principalement de permettre à l’application mobile de WordPress de communiquer avec votre installation WordPress. Sans cela, il n’est pas possible de travailler sur votre WordPress depuis un mobile. Le XML-RPC permet également de faire transiter des données entre WordPress et des systèmes extérieurs au CMS; il intervient également au niveau des rétroliens et des pings, etc.
Utilisateurs de WordPress, XML-RPC est obsolète !
C’est en décembre 2016, dans la version 4.7 de WordPress qu’est arrivée l’API REST dans le coeur du CMS.
REST signifie Representational State Transfer et API signifie Application Programming Interface. Cette API a été créée pour prendre en charge les applications basées sur WordPress et pour transformer WordPress en une plateforme d’application. Par exemple, elle est utilisée avec JavaScript par WordPress.com, dans son interface, pour se connecter à ses bases de données. L’API est également utilisée par l’éditeur de texte Gutenberg qu’on retrouve maintenant sur tous les sites WordPress.
On vous dit tout sur l’API REST vs le XML RPC
L’API REST de WordPress est une interface que les développeurs peuvent utiliser pour accéder à WordPress depuis l’extérieur de l’installation WordPress elle-même. Un peu comme le XML RPC le permettait à l’époque. Il est possible pour les développeurs d’accéder à l’API REST avec du JavaScript.
Depuis que l’API REST a été intégrée dans le coeur de WordPress, le fichier xmlrpc.php n’est plus utilisé. Il est devenu obsolète. La flexibilité de l’API REST est plus grande que le protocole XML-RPC. Le nombre de systèmes avec lesquels l’API REST peut interagir est beaucoup plus large que celui autorisé par le xmlrpc.php.
En effet, xmlrpc.php a ses inconvénients. Il peut introduire des vulnérabilités sur votre site WordPress et a maintenant été supplanté par l’API REST de WordPress, qui fait un bien meilleur travail pour ouvrir WordPress à d’autres applications.
Mais depuis que l’API REST a été intégrée au noyau de WordPress, le fichier xmlrpc.php n’est plus le protocole à privilégier pour la communication avec les sites externes. À la place, c’est l’API REST qui devrait être utilisée, par exemple, pour communiquer avec l’application mobile officielle de WordPress, connectée à votre compte WordPress.com/Jetpack, ou encore l’application de WooCommerce, qui vous permet d’être notifié de chaque vente sur votre boutique.
De nos jours, la grande majorité des applications proposent la connexion via l’API REST, bien que celle-ci peut nécessiter la création d’un compte sécurisé sur la plateforme (comme pour Jetpack ou WooCommerce qui nécessitent un compte membre sur WordPress.com). Cette API REST, plus moderne, offre beaucoup plus de flexibilité aux développeurs.
De son côté, chaque fois qu’une requête est envoyée au xmlrpc.php, le protocole envoie le nom d’utilisateur et le mot de passe pour l’authentification, en clair, via le réseau Internet. Cela représente donc un risque de sécurité énorme, car ces informations pourraient facilement être interceptées sur le réseau. Et c’est quelque chose que l’API REST ne fait pas. Dans les faits, l’API REST utilise OAuth qui envoie des jetons pour l’authentification au lieu de noms d’utilisateur ou de mots de passe en clair. L’API REST est donc bien plus sécurisée que le protocole XML RPC.
Comme vous pouvez le comprendre, puisque xmlrpc.php envoie des informations d’authentification en clair à chaque requête, les pirates pourraient les utiliser pour tenter de faire intrusion dans votre site. On parle alors d’attaques « Brute Force », ce qui pourrait leur permettre d’insérer du contenu, de supprimer du code, d’endommager votre base de données ou plus fréquemment, détourner votre site pour l’utiliser afin de voler des coordonnées bancaires.
En termes simples, si un pirate décide de nuire à votre site, il pourrait envoyer de nombreuses requêtes avec différents noms d’utilisateur et mots de passe. Cela pourrait lui donner accès à votre site ou surcharger votre hébergement, rendant votre site indisponible.
C’est pourquoi, si vous utilisez une version à jour de WordPress, qui utilise l’API REST pour communiquer avec des systèmes externes (comme +99% des utilisateurs aujourd’hui), vous devriez désactiver xmlrpc.php. Il n’est plus nécessaire, par contre, sa présence peut toujours rendre votre site vulnérable de multiples manières.
Quand devez-vous activer xmlrpc.php ?
La réponse courte devrait être : Jamais !
Mais voyons néanmoins quelques cas où vous pourriez vouloir utiliser le protocole XML RPC, même si cela est une mauvaise idée.
En effet, il pourrait y avoir des occasions où vous voudriez activer xmlrpc.php sur votre site WordPress, même si ce n’est pas une bonne pratique.
Par exemple :
- L’API REST n’est pas accessible sur votre site ou votre hébergement Web pour de mauvaises raisons, mais vous désirez néanmoins communiquer avec des services tels que l’application WordPress.com, Jetpack, WooCommerce ou des sites externes. La bonne pratique dans ce cas serait de trouver la cause du blocage de l’API REST et de rétablir son bon fonctionnement pour vous connecter de façon sécurisée (peut nécessiter un compte membre sur WordPress.com).
- Vous ne pouvez pas mettre à jour WordPress à cause d’une version très ancienne antérieure à décembre 2016 (version 4.7 ou inférieure). Donc votre site WordPress ne dispose pas de l’API REST dans son code source. Il peut donc dans ce cas être nécessaire de déplacer votre site, par exemple, sur un hébergement local, pour pouvoir mettre à jour votre CMS, ou alors, effectuer une mise à jour manuelle de votre site WordPress.
- Vous travaillez avec une application externe qui n’est pas encore compatible avec l’API REST, ou qui a utilisé le XML RPC de façon non judicieuse par manque de connaissance de l’écosystème WordPress. Donc, cette application tierce ne peut pas accéder à XML-RPC. Il serait conseillé de mettre à jour cette application (ou demander à son développeur de s’adapter), ou de changer d’application pour utiliser un concurrent qui peut utiliser l’API REST.
Autrement dit, aucun de ces motifs n’est une bonne raison de laisser le protocole XML-RPC ouvert, surtout lorsqu’on connaît les risques en termes de sécurité, de conserver cet ancien protocole.
La seule raison pour laquelle XML RPC est encore dans WordPress est pour des raisons de compatibilité avec les versions antérieures. Donc vous ne l’utiliseriez que si vous travaillez avec des systèmes obsolètes, adaptés aux sites WordPress antérieurs à 2017.
Donc, pour ceux qui veulent garder leurs sites à jour et travailler avec les dernières technologies, désactiver xmlrpc.php est la voie à suivre.
Pourquoi désactiver XML-RPC sur WordPress ?
XML-RPC n’étant plus utilisé, en faveur de l’API REST, il n’est plus nécessaire pour vous de garder XML-RPC actif sur votre site. Ce fichier xmlrpc.php devient une source potentielle de vulnérabilités et est souvent la source d’attaque DDoS.
Ce fichier se retrouve presque systématiquement parmi les scripts les plus consommateurs de ressources, alors qu’il n’est réellement utilisé que par -1% des sites WordPress.
Vous pouvez donc sereinement désactiver le XML RPC de WordPress sur votre Hébergement Web.
Comment désactiver XML-RPC dans WordPress ?
En tant qu’Hébergeur Web offrant également du Support WordPress, nous sommes toujours ravis d’assister les utilisateurs de WordPress, pour désactiver leur XML RPC et ainsi faire baisser la charge de leur compte d’Hébergement cPanel.
Deux méthodes s’offrent à vous pour désactiver le XML-RPC de WordPress
1. Modifier votre fichier .htaccess
Vous pouvez vous connecter à votre compte cPanel puis vous rendre dans le gestionnaire de fichiers.

Dans le dossier contenant votre site, vous trouverez le fichier .htaccess.

Dans notre exemple, le site dans lequel nous souhaitons désactiver XML-RPC étant le site principal de notre offre d’hébergement, il se trouve dans le dossier « public_html ». Si le site sur lequel vous souhaitez intervenir est un domaine supplémentaire, le site se trouvera dans un dossier portant son nom.
Si vous ne voyez pas votre fichier .htaccess, rendez-vous dans « Paramètres » puis cochez la case « Affichier les fichiers masqués (dotfiles) ».

Vous pouvez maintenant éditer votre fichier .htaccess et y ajouter le code suivant :
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Voilà, vous avez désactivé XML-RPC de votre site 🙂
2. Installer un plugin WP pour désactiver le XMLRPC
Si vous ne souhaitez pas modifier vous-même votre fichier .htaccess, il est également possible d’installer un plugin vous permettant de désactiver XML-RPC très simplement. Pour cela, nous vous conseillons 2 plugins :

ou Disable XML-RPC-API, ce dernier étant plus régulièrement mis à jour.

L’installation et l’activation de l’un de ces deux plugins sur votre site WordPress auront pour effet de désactiver le fichier xmlrpc.php.
Le fichier XML RPC de votre site WordPress est désactivé !
Pour le vérifier, visitez simplement l’adresse de votre site Web https://example.com/xmlrpc.php.

Si votre navigateur renvoie une erreur semblable à celle illustrée sur la capture ci-dessus, c’est bon. Votre fichier WordPress xmlrpc.php ne peut plus être exploité par les pirates.
En cas de doute, n’hésitez pas à contacter le support technique d’EasyHoster afin que nous vous confirmions que vous avez correctement désactivé le XML-RPC.
Pour conclure, rappelons que la spécification XML-RPC a été développée avant même la création de WordPress, comme moyen pour WordPress de communiquer avec des systèmes et des applications externes. Elle présente des failles de sécurité inhérentes et pourrait rendre votre site vulnérable à plusieurs types d’attaques.
Maintenant que l’API REST permet à votre site de communiquer avec d’autres applications externes de façon sécurisée, il convient de désactiver l’accès au fichier xmlrpc.php pour des raisons évidentes de sécurité.
Suivre les étapes décrites ci-dessus pour désactiver le XML RPC améliorera considérablement la sécurité de vos sites WordPress et fera économiser beaucoup de ressources à votre compte d’hébergement web.