web-dev-qa-db-fra.com

Restreindre l'accès à xmlrpc.php

Je suis assez nouveau sur Wordpress et j'ai récemment remarqué une énorme quantité de trafic se heurtant à ce qui suit:

162.242.170.222 - - [01/Aug/2014:08:18:54 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:02 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4859
162.242.170.222 - - [01/Aug/2014:08:19:11 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:13 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861
162.242.170.222 - - [01/Aug/2014:08:19:18 -0500] "POST /xmlrpc.php HTTP/1.0" 503 4861

J'ai bloqué l'adresse IP qui est une solution temporaire. Existe-t-il une solution permanente pour bloquer ces demandes, surtout si je n’en ai pas besoin?

2
brentwpeterson

Il existe des plugins pour cela: par exemple http://wordpress.org/plugins/disable-xml-rpc/

Vous pouvez également écrire un filtre vous-même

add_filter('xmlrpc_enabled', '__return_false');

Vous pouvez simplement ajouter ce code à votre thème functions.php (situé dans wp-content/themes/your_theme).

Cependant, il est conseillé de créer un thème enfant ( http://codex.wordpress.org/Theme_Development ) afin que votre modification ne disparaisse pas lorsque vous mettez à jour le thème.

Alternativement, vous pouvez créer votre plugin ( http://codex.wordpress.org/Writing_a_Plugin ) où vous allez mettre tous vos ajustements WordPress.

J'ajoute également les éléments suivants pour une meilleure protection:

/**
 * Secure WordPress by removing version
 */
remove_action('wp_head', 'wp_generator');


/**
 * Secure WordPress by hiding login errors
 */
function hide_login_errors($errors) { return 'login error'; }
add_filter('login_errors', 'hide_login_errors', 10, 1);
4
YaFred

Si votre serveur est un Apache, vous pouvez bloquer l'accès avant que WordPress ne soit même atteint avec une seule ligne dans votre fichier .htaccess:

Redirect 403 /xmlrpc.php

Vous pouvez ajouter une autre ligne pour que la réponse soit courte:

ErrorDocument 403 "no"

Cela enverra une réponse très minimale (deux octets plus les en-têtes HTTP) et vous économiserez vos ressources pour un meilleur trafic.

9
fuxia

Une autre façon est de mettre ceci dans votre fichier .htaccess:

<Files "xmlrpc.php">
order allow,deny
deny from all
errordocument 403 /noaccess.html
errordocument 404 /noaccess.html
</Files>
2
Hans