Qu’est-ce que xmlrpc.php, et comment désactiver XML-RPC sur WordPress ?
Par Eureka Studio · Mis à jour le
En bref
XML-RPC permet à des applications de se connecter via xmlrpc.php, une porte distincte que le masquage de wp-login.php ne ferme pas. Le désactiver est sans risque, sauf si vous utilisez Jetpack ou l’application mobile WordPress. Bloquez le fichier dans .htaccess, ajoutez le filtre xmlrpc_enabled, ou utilisez une extension qui ferme la connexion par XML-RPC tout en gardant les pingbacks. Puis testez.
Étapes
1Étape 1
Vérifiez si xmlrpc.php répond
Rendez-vous sur yoursite.com/xmlrpc.php. Si vous voyez « XML-RPC server accepts POST requests only. », la porte est ouverte.
2Étape 2
Comprenez pourquoi c’est important
L’Analyse de surface de Hushfort fait un vrai test. Sur un site ouvert, elle signale que des mots de passe peuvent être testés en contournant le chemin de connexion masqué, et que system.multicall permet à une seule requête de transporter des centaines de tentatives.

3Étape 3
Choisissez jusqu’où la fermer
Ouvrez Hushfort → Durcissement de surface et cochez Activer le durcissement de surface. XML-RPC est réglé par défaut sur « Désactiver la connexion, garder les pings (recommandé) », ce qui convient à la plupart des sites. « Désactiver complètement » est le plus strict mais bloque Jetpack et l’application mobile officielle. Cliquez sur Enregistrer les modifications.

4Étape 4
Vérifiez que la connexion par XML-RPC est refusée
De retour dans la Vue d’ensemble, cliquez sur Relancer l’analyse. La ligne XML-RPC doit désormais indiquer « Connexion désactivée — les tentatives de mot de passe sont rejetées, les pingbacks continuent de fonctionner. »

Pourquoi c’est important
XML-RPC est une ancienne interface de contrôle à distance de WordPress. Avant l’arrivée de l’API REST, c’était
ainsi que les éditeurs de bureau et les applications mobiles publiaient des articles. Elle est toujours livrée avec chaque site WordPress,
à l’adresse /xmlrpc.php, et elle accepte toujours un identifiant et un mot de passe à chaque requête.
Cela en fait une seconde porte de connexion. Masquer wp-login.php ne la touche pas. Le code de limitation des connexions
qui ne surveille que le formulaire de connexion ne la voit pas. Et avec system.multicall, une seule requête HTTP
peut transporter des centaines de tentatives de mot de passe. Une limite qui compte les requêtes voit une
tentative là où il y en avait cinq cents.
Ce n’est pas théorique. Nous avons créé cette couche après qu’une boutique a continué de recevoir des tentatives de mot de passe via XML-RPC alors que sa page de connexion était déjà masquée.
Utilisez-vous XML-RPC ? Probablement pas, si rien de ce qui suit ne vous concerne :
- Vous connectez le site à Jetpack.
- Vous publiez ou modérez depuis l’application mobile officielle WordPress.
- Vous utilisez un ancien outil de blog pour ordinateur, ou un service qui vous demande votre identifiant et votre mot de passe WordPress (plutôt qu’un mot de passe d’application) pour publier à votre place.
- Vous comptez sur les pingbacks d’autres blogs.
Dans le doute, fermez uniquement la connexion et gardez les pingbacks. Cela supprime le risque de devinette des mots de passe et laisse en place les éléments inoffensifs. Vous pourrez toujours être plus strict plus tard.
Erreurs courantes
- Masquer la connexion et s’arrêter là. Les tentatives de mot de passe se déplacent tout simplement vers
xmlrpc.php. - Bloquer tout le fichier sans vérifier. Jetpack et l’application mobile officielle WordPress se connectent via XML-RPC. Si vous les utilisez, fermez uniquement les méthodes de connexion, ou testez soigneusement.
- Se fier à un interrupteur sans tester. Certaines méthodes laissent une partie de XML-RPC répondre. Vérifiez toujours le résultat avec une vraie requête (voir l’étape 4, ou vérifier ce que votre site expose).
- Oublier la couche de cache. Si une règle de CDN bloque déjà
xmlrpc.php, un réglage au niveau de WordPress n’aura aucun effet visible. Ce n’est pas grave ; sachez simplement quelle couche fait le travail.
Sans extension
Option 1 : le filtre xmlrpc_enabled. Ajoutez ceci dans une petite extension indispensable (must-use)
(wp-content/mu-plugins/no-xmlrpc-login.php) ou dans le functions.php de votre thème enfant :
<?php
add_filter( 'xmlrpc_enabled', '__return_false' );
Cela désactive les méthodes XML-RPC qui nécessitent une connexion. Les pingbacks continuent de fonctionner car ils n’en
ont pas besoin. À lui seul, ce filtre ne supprime pas system.multicall, et le fichier répond toujours aux requêtes.
Pour supprimer aussi la méthode multicall :
<?php
add_filter( 'xmlrpc_methods', function ( $methods ) {
unset( $methods['system.multicall'] );
return $methods;
} );
Option 2 : bloquer le fichier au niveau du serveur. Sur Apache, dans .htaccess :
<Files xmlrpc.php>
Require all denied
</Files>
Sur Nginx : location = /xmlrpc.php { deny all; }. C’est l’option la plus stricte et elle ne coûte rien au
serveur, mais elle supprime aussi les pingbacks, Jetpack et l’application mobile, et elle se trouve en dehors de
WordPress : on l’oublie donc facilement en changeant d’hébergeur.
En cas de problème
- Jetpack affiche une erreur de connexion. Jetpack a besoin de XML-RPC. Passez de « Désactiver complètement » à « Désactiver la connexion, garder les pings », ou supprimez votre règle serveur.
- L’application mobile WordPress ne parvient pas à se connecter. Même cause. Utilisez le navigateur sur mobile, ou autorisez la connexion par XML-RPC en vous appuyant sur les limites de connexion et la double authentification.
- Un outil de publication ne publie plus. Vérifiez s’il utilise XML-RPC. La plupart des outils modernes sont passés à l’API REST avec des mots de passe d’application.
Avec Hushfort
Le Verrou XML-RPC fait partie de Hushfort Pro. L’Analyse de surface, qui montre si XML-RPC est ouvert, est incluse dans Hushfort Security, l’extension de sécurité WordPress gratuite.
Le Verrou XML-RPC fait partie de la couche Durcissement de surface de Hushfort. Il vous propose quatre choix :
- Désactiver la connexion, garder les pings (recommandé) : deviner les mots de passe via XML-RPC devient impossible, tandis que les pingbacks et trackbacks continuent de fonctionner. Un bon choix pour les sites de boutique.
- Désactiver complètement : l’option la plus stricte. Jetpack et l’application mobile officielle ne peuvent plus se connecter.
- Désactiver uniquement system.multicall : ferme les tentatives en masse, laisse le reste intact.
- Ne pas modifier : le réglage par défaut de WordPress.
L’Analyse de surface vérifie ensuite le résultat avec de vraies requêtes : vous voyez ce que voit une personne extérieure.
La Protection anti-surcharge attribue aussi aux requêtes xmlrpc.php un coût plus élevé qu’une simple page vue, ce qui ralentit
le bruit restant.
Questions fréquentes
Est-il sans risque de désactiver XML-RPC dans WordPress ?
Masquer la page de connexion masque-t-il aussi xmlrpc.php ?
Qu’est-ce que system.multicall ?
Désactiver XML-RPC va-t-il casser les pingbacks ?
Le filtre xmlrpc_enabled désactive-t-il complètement XML-RPC ?
Guides associés
Comment vérifier la sécurité de mon site WordPress et ce qu’il expose ?
Testez la sécurité de votre site WordPress comme un robot : cinq requêtes montrent si la connexion, XML-RPC et vos identifiants sont exposés.
Voir les étapesComment limiter les tentatives de connexion sur WordPress ?
Limitez les tentatives de connexion WordPress pour stopper la force brute : bloquez une IP après quelques échecs. Bons réglages, code manuel, failles.
Voir les étapesComment changer l’URL de connexion de WordPress ?
Changez l’URL de connexion WordPress et masquez wp-admin en cinq étapes sûres. Testez avant de vous déconnecter et sachez retrouver l’accès en cas d’oubli.
Voir les étapes
