Si vous êtes du genre curieux et que vous regardez les fichiers qui composent WordPress, vous avez peut-être remarqué un fichier au nom un peu étrange. 

Tapi dans l’ombre, il laisse la lumière aux célèbres wp-config.php ou wp-login.php, pour ne citer qu’eux. Dans cet article, on va pourtant braquer nos projecteurs sur lui. Lui, c’est le fichier xmlrpc.php de WordPress.

Un homme lève le poing sur scène.
C’est pour toi, public.

C’est grâce à lui que vous profitez du protocole XML-RPC sur WordPress. Le XM… quoi ? Minute papillon ! Vous allez tout savoir sur la question dans ce contenu pratique. 

Et vous verrez que pour des raisons de sécurité, il vaut mieux, bien souvent, désactiver ce fameux protocole qui peut vite devenir assez encombrant.

Je ne vous en dis pas plus. Découvrez la suite sans tarder.

Hébergez votre site chez o2switch

Faites comme WPMarmite, choisissez o2switch. Non seulement les performances sont au rendez-vous mais le support est exceptionnel.

ESSAYEZ O2SWITCH
o2switch

Qu’est-ce que le XML-RPC sur WordPress ?

Définition du XML-RPC

Le XML-RPC est un protocole qui permet à des logiciels fonctionnant sur des systèmes d’exploitation et des environnements différents (Windows, Mac OS X, GNU/Linux etc.) de communiquer entre eux sur internet via une procédure d’appel à distance.

Comme l’indique le site officiel qui lui est consacré, le XML-RPC utilise « HTTP comme moyen de transport et XML comme encodage. XML-RPC est conçu pour être aussi simple que possible, tout en permettant la transmission, le traitement et le retour de structures de données complexes. »

Pour mieux comprendre de quel bois est fait ce protocole, décortiquons-le : 

  • XML signifie eXtensible Markup Language (Langage de balisage extensible, en français). Il s’agit d’un langage de balisage généraliste – comme le HTML – qui sert à stocker et à partager des données entre différents systèmes ;
  • RPC (Remote Procedure Call) est « un protocole réseau permettant de faire des appels de procédures sur un ordinateur distant à l’aide d’un serveur d’applications », détaille Wikipédia.

Voilà pour la présentation générale. Voyons maintenant ce qu’implique la présence de ce protocole XML-RPC sur WordPress. 

Un protocole embarqué nativement sur WordPress

Plus concrètement, le protocole XML-RPC permet à votre site WordPress de communiquer avec des serveurs externes, tels que des applications tierces. 

WordPress l’embarque nativement depuis 2012 et l’active même par défaut sur tous les sites qui tournent sur une version supérieure ou égale à la 3.5 (auparavant, l’utilisateur avait le choix d’activer ou non cette fonctionnalité). 

Sur WordPress, le XML-RPC est une API. C’est grâce à elle que d’autres services peuvent communiquer avec votre site WordPress et échanger des données.

API signifie Application Programming Interface (Interface de programmation d’application). Elle permet à un logiciel de se connecter à une application ou à un système différent « afin qu’ils puissent échanger leurs fonctionnalités, leurs services, leurs technologies et leurs données ».

À ce propos, le célèbre plugin Jetpack utilise par exemple le protocole XML-RPC pour connecter votre site à WordPress.com.

En pratique, il faut savoir que les spécifications XML-RPC intégrées à WordPress sont contenues dans un fichier xmlrpc.php, présent dans toute nouvelle installation fraiche de WordPress. 

Vous pouvez le trouver au sein du dossier contenant tous les fichiers et répertoires de base de WordPress, une fois que vous l’avez téléchargé. Le code ressemble en partie à ça :

Un aperçu du contenu du fichier xmlrpc.php de WordPress.

À quoi sert le fichier xmlrpc.php sur WordPress ?

C’est donc grâce au fichier xmlrpc.php de WordPress que vous pouvez par exemple : 

  • vous connecter à votre site WordPress à l’aide d’un smartphone, grâce à l’application WordPress disponible sur mobile (iOS et Android) ; 
  • lier votre site WP à des systèmes extérieurs comme des outils d’automatisation type Zapier ou IFTTT ; 
  • activer les pings et rétroliens sur votre site. Un ping est un signal envoyé par WordPress à un autre site, logiciel ou serveur pour indiquer que vous venez de publier un nouveau contenu (ou de le mettre à jour).
    Un rétrolien (ou trackback) est un lien créé automatiquement entre deux articles. 

Bien que le CMS (Content Management System) le plus populaire au monde embarque le protocole XML-RPC nativement, vous allez voir qu’il est judicieux, la plupart du temps, de désactiver ce fichier xmlrpc.php sur votre site WordPress

Découvrez pourquoi dans la partie suivante.

Pourquoi désactiver le fichier xmlrpc.php sur WordPress ? 

Parce qu’il a été supplanté par l’API REST

Le protocole XML-RPC est un vieux de la vieille, comme on dit. Il a été lancé en avril 1998, à une période où l’usage du Minitel était encore courant. Eh bien, tout ça ne nous rajeunit pas.

Entretemps, tout a très vite évolué et le protocole XML-RPC a perdu en popularité, dépassé par d’autres technologies.

C’est par exemple le cas de l’API REST, intégrée au Core (Noyau) de WordPress depuis le lancement de sa version 4.7, en décembre 2016. Elle est par exemple utilisée par l’éditeur de contenu de WordPress (Gutenberg).

REST est une architecture logicielle qui permet de développer des services web. 

Destinée avant tout aux développeurs, cette API REST transmet des données au format JSON, alors que le XML-RPC utilise le format XML.

L’API REST permet aussi à WordPress de communiquer avec d’autres sites et applications.

Tiens, tiens, ça ne vous rappelle rien ? Eh oui : l’API REST est capable de remplir le même rôle que votre fichier xmlrpc.php de WordPress… tout en étant beaucoup plus flexible et surtout plus puissante. 

En résumé, et pour schématiser, il y a donc doublon entre les deux (le XML-RPC et l’API REST). Dans la grande majorité des cas, vous n’avez donc pas besoin de votre fichier xmlrpc.php sur votre site WordPress.

Deux canards se font face.
XML-RPC ou API REST ? Qui l’emportera ?

Si WordPress continue de proposer un fichier xmlrpc.php alors même qu’elle intègre l’API REST, c’est essentiellement pour des raisons de rétrocompatibilité. En effet, tous les sites WP ne tournent pas sur l’une de ses dernières versions et le XML-RPC est donc requis pour certaines opérations. 

Parce qu’il peut représenter un risque pour la sécurité de votre site

Par ailleurs, le fichier xmlrpc.php de WordPress peut représenter un risque pour la sécurité de votre site. Attention, ne cédez pas à la panique non plus !

Tout d’abord, sachez que le protocole XML-RPC est sécurisé. Ce n’est pas vraiment lui qui pose problème en soi, mais plutôt la façon dont il va être utilisé.

Cela vous expose à deux types de risques majeurs, susceptibles de rendre votre site plus vulnérable. 

La désactivation du fichier xmlrpc.php peut limiter les attaques par force brute

Tout d’abord, ce protocole peut-être exploité pour lancer des attaques par force brute.

En effet, lorsqu’un service tente de communiquer avec votre site WordPress, votre nom d’utilisateur et votre mot de passe sont transmis « en clair » (en particulier lorsque vous voulez vous connecter à distance, par exemple via une application).

Dans ce cas, des robots malveillants (bots) peuvent en profiter pour tenter de découvrir l’identifiant et le mot de passe du compte administrateur de votre site en testant des combinaisons différentes, afin d’en prendre le contrôle.

Ce sont les fameuses attaques par force brute (brute force attacks, en anglais). À ce niveau-là, l’API REST de WordPress utilise un protocole plus sécurisé que le XML-RPC lorsqu’elle envoie une requête au serveur.

Pour combattre les attaques par force brute, vous pouvez par exemple utiliser un plugin dédié comme Limit Login Attempts Reloaded. Si vous vous servez d’une extension de sécurité généraliste – ce qui est fortement recommandé – comme iThemes Security ou SecuPress, vous pouvez aussi profiter d’une option dédiée pour limiter ce type d’attaques. Enfin, pensez en amont à utiliser des mots de passe forts. Pour cela, utilisez un générateur de mot de passe comme celui proposé par Avast ou bien Dashlane.

Bannière de Limit Login Attempts Reloaded

Les attaques par déni de service distribué ne cibleront plus votre fichier

L’autre menace que vous pouvez rencontrer est la recrudescence d’attaques par déni de service distribué (DDoS, Distributed Denial of Service). Comme vous l’avez lu un peu plus haut, le fichier xmlrpc.php permet d’activer les pings et les rétroliens.

Les pirates peuvent alors en profiter pour générer de très nombreux rétroliens, en exploitant le fichier xmlrpc.php de WordPress, afin de faire votre planter votre serveur, incapable de traiter un nombre trop élevé de requêtes à la fois. 

Votre site court alors le risque de devenir indisponible pendant plus ou moins longtemps. Cela peut impacter très négativement votre trafic ainsi que votre chiffre d’affaires, en particulier si vous disposez d’une boutique en ligne WooCommerce

Dans certains cas de figure, mais cela vaut surtout pour les gros sites e-commerce et gouvernementaux, les auteurs d’attaques par déni de service peuvent aussi réclamer une rançon. 

Par conséquent, il est donc recommandé de désactiver le XML-RPC afin de renforcer la sécurité de votre site WordPress.

Avant de voir précisément comment faire, il est important de connaître quelques situations pour lesquelles la désactivation du fichier xmlrpc.php de WordPress n’est pas forcément opportune. 

Pour renforcer la sécurité de votre site, sauvegardez-le régulièrement et pensez à le mettre à jour dès que possible. Pour cela, vous pouvez utiliser un outil comme WP Umbrella, qui combine diverses fonctionnalités dédiées à la maintenance d’un site au sein du même tableau de bord. C’est très pratique si vous avez l’habitude d’en gérer plusieurs à la fois, notamment pour vos clients.

WP Umbrella : L’outil incontournable pour gérer vos sites WordPress

Mettez à jour vos thèmes et extensions, monitorez et sauvegardez vos sites WordPress à partir d’un tableau de bord unique. 

Je mets mes sites à l’abri
wp umbrella

Dans quels cas de figure devez-vous conserver un fichier xmlrpc.php actif ?

Désactiver le protocole XML-RPC de WordPress va s’imposer la plupart du temps, sauf si vous êtes dans l’un des cas de figure suivants : 

  • vous utilisez une version de WordPress inférieure à la 4.7. Cela signifie que l’API REST n’est pas intégrée dans le Cœur de WordPress. Le XML-RPC sera alors nécessaire pour vous servir de certaines fonctionnalités.
    Bon, si vous êtes dans ce cas de figure, je vous recommande au plus vite de passer sur la dernière version à jour de WordPress, notamment pour des raisons de sécurité ; 
  • vous vous servez d’une application ou d’un logiciel tiers qui communique avec WordPress uniquement à l’aide du protocole XML-RPC et ne prend pas en charge l’API REST. 

En principe, il y a très peu de chances que vous soyez dans l’une de ces situations-là, mais sait-on jamais.

Un oiseau cool.

Comment savoir si le fichier xmlrpc.php est actif sur votre site WordPress ? 

Avant de passer à l’action et de vous montrer comment désactiver votre fichier xmlrpc.php sur WordPress, il est bon de vérifier que ce fichier soit bien actif sur votre site. 

Pour cela, vous pouvez utiliser un outil en ligne proposé par le World Wide Web Consortium (W3C)

Entrez l’URL de votre site (ex : celle de la page d’accueil) dans le champ appelé « Address », puis cliquez sur le bouton « Check » :

L'outil de validation XML-RPC proposé par W3C.

Si le protocole XML-RPC inactif, vous verrez le message suivant :

Désactivation du protocole XML-RPC sur un site WordPress.

Par contre, s’il est actif sur votre site, vous verrez ceci sur votre écran :

Détection d'un fichier xmlrpc.php sur un site WordPress.

Dans ce cas, vous pouvez le désactiver grâce au mode d’emploi proposé juste en dessous. 

Comment désactiver le XML-RPC sur WordPress ?

Avant toute manipulation, sauvegardez votre site afin d’être sûr de pouvoir le restaurer en cas de problème. Pour cela, vous pouvez utiliser une extension de sauvegarde comme UpdraftPlus, ou bien un outil tout-en-un comme WP Umbrella, dont on a parlé tout à l’heure.

À ce stade, vous vous dites peut-être : « O.-K., facile : il me suffit de supprimer le fichier xmlrpc.php du répertoire racine de mon site pour être débarrassé de ce truc ». 

Si jamais cette idée-là vous vient à l’esprit, ne la mettez pas en pratique. Vous vous exposez à des risques d’incompatibilités entre certains plugins, et aussi à certains dysfonctionnements.  

Concernant la marche à suivre, vous disposez de deux options sur la table : 

  • l’usage d’un plugin, conseillé pour les débutants et les personnes qui ne souhaitent pas toucher au code ; 
  • la méthode manuelle, à destination des développeurs et techniciens aguerris. 

Comment désactiver le fichier xmlrpc.php avec un plugin ?

Pour commencer, voyons comment procéder à l’aide d’une extension. Sur le répertoire officiel de plugins WordPress, il en existe plusieurs pour désactiver le protocole XML-RPC sur WordPress.

Disable XML-RPC (200K+ installations actives) permet de désactiver le protocole XML-RPC automatiquement. Pour cela, il vous suffit de l’activer sur votre interface d’administration.

Allez dans Extensions > Ajouter et tapez « Disable XML-RPC » dans la barre de recherche :

Installation de l'extension Disable XML-RPC sur WordPress.

Installez-la puis activez-la, et le tour est joué. 

Si vous voulez avoir un contrôle un peu plus fin, utilisez au choix l’un des deux plugins suivants :

L’un ou l’autre vous permettront de désactiver certains aspects du protocole seulement, comme par exemple les pings et les rétroliens.

Avec Disable XML-RPC-API, par exemple, il vous suffit de vous rendre dans le menu XML-RPC Security > XML-RPC Settings après activation de l’extension.

Vous pourrez alors choisir de désactiver les pingbacks :

Désactivation des pingbacks sur l'extension Disable XML-RPC-API sur WordPress.

Si vous utilisez un plugin de sécurité généraliste, vérifiez qu’il ne propose pas déjà une option pour désactiver l’API XML-RPC de WordPress. C’est le cas chez iThemes Security, par exemple, dans son menu « Réglages » (il est aussi possible de désactiver les pings). Ainsi, vous n’avez pas besoin d’activer une extension supplémentaire. 

Comment désactiver le fichier xmlrpc.php sans extension ?

Si vous avez les compétences nécessaires et/ou n’avez pas peur de mettre les mains dans le cambouis, vous pouvez évidemment désactiver le XML-RPC sur WordPress à l’aide d’un morceau de code.

Utilisez cette méthode seulement si vous êtes sûr de ce que vous faites. Dans le cas contraire, préférez l’usage d’une extension. Et bien sûr, sauvegardez votre site au préalable.

Méthode pour désactiver le XML-RPC sur WordPress via le fichier .htaccess

Une première façon de faire consiste à utiliser votre fichier .htaccess. Ce dernier se trouve généralement à la racine de votre site, sur votre serveur d’hébergement.

Si vous avez besoin de créer un fichier .htaccess, consultez notre guide dédié sur le blog. Vous y trouverez aussi de nombreuses directives pour le personnaliser et rendre votre site plus sécurisé et performant.

Pour y accéder, connectez-vous à votre client FTP favori (ex : FileZilla) à l’aide des identifiants fournis par votre hébergeur.

Localisez le dossier racine. Ce dernier peut porter un nom différent en fonction de votre hébergeur.

Chez o2switch (lien affilié), l’hébergeur que WPMarmite utilise et recommande, ce répertoire s’appelle public_html.

Édition du fichier .htaccess sur FileZilla.

Sélectionnez le fichier .htaccess en cliquant dessus, puis faites un clic droit. Sélectionnez « Afficher / Éditer » et placez le morceau de code suivant dans le fichier après la ligne de commentaire # END WordPress : 

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Sauvegardez le fichier et actualisez votre site pour vérifier que tout fonctionne toujours correctement. 

Quelle que soit la méthode choisie (plugin ou option manuelle), si tout va bien, le fichier xmlrpc.php de WordPress ne sera plus actif. 

Vous pouvez le vérifier très vite en vous servant de l’outil proposé par le W3C cité précédemment. 

Sans entrer dans les détails, car là encore c’est technique, sachez que vous pouvez aussi désactiver le fichier xmlrpc.php de WordPress en créant un plugin qui contient un filtre spécifique avec la ligne de code suivante : add_filter('xmlrpc_enabled', '__return_false');.
C’est moins recommandé, mais vous pouvez aussi ajouter ce snippet dans le fichier functions.php de votre thème enfant.
Mais là encore, c’est purement informatif. Abstenez-vous si vous n’avez pas les connaissances requises !

Conclusion

Grâce à cet article, vous connaissez beaucoup mieux le protocole XML-RPC et le fichier xmlrpc.php de WordPress qui lui est associé. 

Pour récapituler,  vous avez découvert : 

  • ce qu’est le protocole XML-RPC et son impact sur votre site WordPress ; 
  • pourquoi il est utile de désactiver ce protocole dans la plupart des cas ;
  • comment désactiver le XML-RPC à l’aide d’une extension ou manuellement.

En parallèle, pensez à prendre soin de la sécurité de votre site. On vous a livré quelques bonnes pratiques classiques tout au long de ces lignes.

N’hésitez pas à les coupler au visionnage de la série vidéo Le Point Sécu sur la chaîne YouTube de WPMarmite

De votre côté, où en êtes-vous ? Avez-vous essayé de désactiver le XML-RPC, ou comptez-vous vous y mettre ? Partagez-nous votre retour en publiant un commentaire.