Le XML-RPC de WordPress est une spécification qui vise à normaliser les communications entre les différents systèmes. Il utilise HTTP comme mécanisme de transport et XML comme mécanisme d’encodage qui permet la transmission d’un large éventail de données.

Pour nous WordPressiens, la partie la plus importante est « les différents systèmes ». WordPress a besoin de communiquer avec d’autres systèmes de temps en temps et jusqu’à récemment, XML-RPC était le meilleur candidat pour ce poste. Lorsque vous communiquez avec d’autres systèmes de blogs comme Blogger ou Movable Type, ou lorsque vous postez depuis des clients de bureau ou les applications mobiles officielles, XML-RPC était, et est toujours, là pour vous aider.

Pourquoi tout ce passé ? Très bientôt, la nouvelle API WP prendra sa place, qui est une API RESTful apportant plus de flexibilité, une meilleure sécurité et un bonheur tota. Cependant, comme chez WordPress tout est une question de rétrocompatibilité, XML-RPC sera là pour longtemps encore, alors autant s’y familiariser !

L’histoire du XML-RPC de WordPress

Savez-vous quand WordPress a implémenté le XML-RPC pour la première fois ? Version 3.4, 2.1, peut-être aussi ancienne que 1.2 ? Non, question piège, c’était une partie du logiciel de blogging b2 original, dont WordPress est tiré. C’est l’époque où la version zippée était de 268kb et il y avait plus de fichiers et de dossiers commençant par « b2 » que « wp ».

La logique derrière le système entier était contenue dans le fichier xmlrpc.php dans le répertoire racine. Il contenait des fonctions telles que wp_insert_post(), wp_delete_post() et ainsi de suite.

XML-RPC était désactivé par défaut à l’origine, vous deviez aller dans Paramètres > Écriture > Publication à distance pour l’activer. Depuis la version 3.5, la fonctionnalité est activée par défaut.

Le XML-RPC aujourd’hui

Après avoir subi un certain nombre de changements, la taille de ce fichier passe de 83kb à seulement 3kb, la plupart des fonctionnalités sont maintenant cachées dans une petite classe. Cette classe s’appelle wp_xmlrpc_server et se trouve dans wp-includes/class-wp-xmlrpc-server.php et contient 48 fonctions WordPress, 7 fonctions Blogger, 6 fonctions MetaWeblog, 8 fonctions MovableType et 4 fonctions pingbacks.

Comme je l’ai dit plus tôt, ces documents ne sont pas très bien documentés, vous devrez donc ouvrir ce dossier et jeter un coup d’oeil à la classe vous-même. Il y a aussi un article de Tuts+ sur le codage avec XML-RPC en tête, mais c’est tout.

XML-RPC dans le futur

L’avènement de la nouvelle API WP verra la chute du XML-RPC. L’API WordPress peut déjà être utilisée, mais nécessite une activation via plugin et est encore en phase de test. Pas très loin dans le futur, cela fera partie du code au coeur de WordPress, et c’est à ce moment que cela commencera à empiéter sur le territoire de XML-RPC.

Pour le moment, il y a quelques fonctionnalités qui font encore défaut à l’API WordPress, bien qu’elle soit beaucoup plus puissante que le XML-RPC. Jetez un coup d’œil à l’excellente comparaison sur le site Web de WP API.

Les problèmes avec le XML-RPC

Les deux principaux atouts de l’API sont son extensibilité et sa sécurité. Le XML-RPC s’authentifie avec l’authentification de base. Il envoie le nom d’utilisateur et le mot de passe avec chaque requête, ce qui n’est pas vraiment recommandé au niveau sécurité.

Les deux principaux atouts de l’API sont son extensibilité et sa sécurité. Le XML-RPC s’authentifie avec l’authentification de base. Il envoie le nom d’utilisateur et le mot de passe avec chaque requête, ce qui n’est pas vraiment recommandé au niveau sécurité.

De plus, les fonctions et les méthodes n’ont pas besoin d’être codées en dur dans l’implémentation spécifique. Vous pouvez (déjà) ajouter vos propres terminaux pour créer tout ce que vous voulez, vous n’êtes pas limité à l’ajout d’articles, la gestion des taxonomies et des utilisateurs, etc.

Bien que vous puissiez également étendre le XML-RPC, le processus n’est pas bien documenté et n’est pas aussi puissant que son homologue API.

JSON vs XML est un autre argument où le XML-RPC peut ne pas être à la hauteur. L’API utilise JSON pour envoyer et recevoir des données, ce qui est favorisé par les développeurs en raison de sa facilité d’utilisation dans les langues côté serveur et côté client. XML peut devenir un peu délicat, nécessitant des classes PHP pour lire correctement.

Vous avez des problèmes de temps d'indisponibilité et de WordPress ? Kinsta est la solution d'hébergement conçue pour vous faire gagner du temps ! Découvrez nos fonctionnalités

Enfin, et ce n’est pas le moins important, XML-RPC est devenu ces dernières années une cible de plus en plus importante pour les attaques par brute force. Cela n’a rien à voir avec une quelconque vulnérabilité de sécurité mais tout à voir avec un autre chemin dans WordPress. Lorsque vous utilisez le XML-RPC pour passer des appels, vous devez fournir un nom d’utilisateur et un mot de passe et le système vous confirmera si vous avez trouvé une paire valide.

Améliorer le XML-RPC

Si vous n’utilisez pas le XML-RPC du tout, la meilleure chose à faire est peut-être de le désactiver. Il existe un plugin gratuit nommé Disable XML-RPC qui le fera. Le plugin Premium Perfmatters (développé par un membre de l’équipe de Kinsta) vous permet également de désactiver le XML-RPC ainsi que d’autres optimisations pour votre site WordPress.

Désactiver le XML-RPC avec perfmatters

Désactiver le XML-RPC avec perfmatters

Ou vous pouvez le faire avec du code en ajoutant ce qui suit à un plugin ou à un thème (c’est certainement le territoire des plugins cependant) :

add_filter( 'xmlrpc_enabled', '__return_false' );

L’autre problème que vous pouvez empêcher est les tentatives de connexion par brute force. Ces plugins verrouilleront le login une fois que deux tentatives échouées auront été faites. All In One WP Security And Firewall est un plugin plus élaboré qui fait cela, mais vous pouvez utiliser des outils plus spécifiques comme Login Lockdown. J’aime utiliser moi-même des plugins plus spécifiques, pour réduire les traces de mon plugin.

Vérifier le XML-RPC sur votre site WordPress

Vous ne savez pas si le XML-RPC fonctionne actuellement sur votre site Web ? Danilo Ercoli, de l’équipe Automattic, a écrit un petit outil appelé XML-RPC Validator. Vous pouvez tester votre site WordPress à travers cela pour voir si le XML-RPC est activé. Si ce n’est pas le cas, vous verrez un message d’erreur tel que montré dans l’image ci-dessous sur le blog Kinsta.

check wordpress xmlrpc

Comment arrêter une attaque XML-RPC WordPress

Chez Kinsta, lorsqu’une attaque par XML-RPC est détectée, un petit bout de code est ajouté dans le fichier de configuration de nginx pour les arrêter – produisant une erreur 403.

location ~* ^/xmlrpc.php$ {
return 403;
}

Résumé

À mon avis, le XML-RPC de WordPress était un excellent système, mais il est temps de passer à l’API WP. En raison de la rétrocompatibilité, les développeurs devraient toujours connaître et être capables d’utiliser le XML-RPC, mais cela deviendra de moins en moins populaire avec le temps.

12
Partages