Bloquer le XML-RPC sur WordPress
XML-RPC permet la communication entre WordPress et d’autres systèmes. Présent depuis les débuts de WordPress, il a été utilisé entre autres pour les échanges avec l’application mobile, avec d’autres plateformes de blogging ou l’extension tout-en-un JetPack. L’API REST a remplacé le XML-RPC. Ce dernier n’est donc plus utile et il est préférable de la désactiver, surtout qu’il est sensible, du fait de ses spécificités, aux attaques en force brute et attaques DDoS. L’API REST est totalement stable depuis de nombreuses versions de WordPress. Le XML-RPC vit certainement ses derniers jours, il est devenu totalement obsolète.
Désactiver le XML-RPC avec une extension
Les modules suivants permettent de désactiver le xmlrpc.php. La première extension est dédiée uniquement à cette tâche.
Disable XML-RPC (de Philip Erb)
https://wordpress.org/plugins/disable-xml-rpc/
Disable XML-RPC-API (de Neatmarketing)
https://wordpress.org/plugins/disable-xml-rpc-api/
Cerber Security, Anti-spam & Malware Scan (de Cerber Tech Inc.)
Clearfy (de Creative Motion)
Loginizer (de Softaculous) dans sa version pro
Désactiver le xmlrpc.php via le fichier .htaccess
Dans votre fichier .htaccess, il vous suffit d’ajouter le code suivant :
# BEGIN Disable XML-RPC request
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
# END Disable XML-RPC
Désactiver le xmlrpc.php sur votre serveur
Si vous êtes sur serveur Nginx, demandez à votre Sysadmin d’ajouter au fichier Nginx.config le code suivant :
# nginx block xmlrpc.php requests
location ~* ^/xmlrpc.php$ {
return 403;
}
Bloquer xmlrpc.php avec wp-config.php
Vous pouvez également ajouter un filtre à la fin du fichier wp-config.php. Le XML-RPC sera ainsi désactivé. Ajoutez le code ci-dessous juste après la dernière instruction `ABSPATH`:
add_filter('xmlrpc_enabled', '__return_false');
Désactiver le xmlrpc via le fichier function.php
Attention ce code n’a pas été vérifié dernièrement. A tester sur un site en développement.
add_filter(‘xmlrpc_enabled’, ‘__return_false’);
// Desactive x-pingback HTTP header
add_filter(‘wp_headers’, function($headers) {
unset($headers[‘X-Pingback’]);
return $headers;
});
// Desactive les pingbacks
add_filter( ‘xmlrpc_methods’, function( $methods ) {
unset( $methods[‘pingback.ping’] );
return $methods;
} );
remove_action( ‘wp_head’, ‘rsd_link’ );
Tester si le XML-RPC est bien désactivé
Une fois le module installé et paramétré ou une fois que vous avez utilisez une des autres méthodes, vous pourrez vérifier si le XML-RPC est bien bloqué sur le site suivant https://xmlrpc.eritreo.it/. Indiquez l’URL de votre site dans le champ Address puis cliquez sur Check. Si le XML-RPC est bien bloqué, vous obtiendrez le résultat suivant :
A noter qu’il n’est pas judicieux de juste effacer le fichier xmlrpc.php de votre dossier WordPress. Il est possible que cela provoque des erreurs sur votre site internet et le fichier réintégrera le code lors des différentes mises à jour.