Tutoriel WordPress : désactiver le REST API et XML RPC

  • ARTICLES
  • /
  • TUTORIEL WORDPRESS : DÉSACTIVER LE REST API ET XML RPC

Le REST API et le XML RPC sont deux moyens pour effectuer des commandes à WordPress depuis l'extérieur, c'est-à-dire avec un autre application que votre tableau de bord sous wp-admin.



Ces fonctionnalités méritent d'être nativement présentes pour des projets gigantesques. Mais pour votre simple blog que vous administrez uniquement via wp-admin, il serait plus sûr de les désactiver.



REST API et XML RPC : pourquoi les désactiver ?



Comme expliqué plus haut, ce sont deux moyens pour transmettre des informations à WordPress sans passer par le tableau de bord. Elles sont généralement utilisées par des scripts spécialement conçus pour.



Pensez à une cellule de prison. Plus il y a de portes, plus il y a risque qu'un criminel venant de l'extérieur puisse régler le compte à son ennemi derrière les barreaux. Par analogie, REST API et XML RPC sont deux portes pour parvenir au coeur de WordPress.



D'ailleurs, XML RPC est un vieux protocole, disons que c'est le jeune ancêtre de REST API qui, lui en revanche, est à son très jeune âge. En parlant d'âge, voici quelques points à retenir :




  • Utiliser une technologie, application ou librairie fraîchement débarquée de la tête d'un ou plusieurs codeurs est une pratique hasardeuse. On ne sait pas encore exactement sa fiabilité et sa sécurité. Plus un script vieillisse sur le web, plus ceux qui l'utilisent le perfectionne, d'où les nouvelles versions.

  • Les vieux scripts non maintenus reviennent à peu près comme le premier point. Sauf une chose, il se peut que des failles aient déjà été découvertes mais puisqu'elle n'est plus maintenue, il n'y a plus de mises à jour. Donc, si vous l'utilisez, il est susceptible que quelqu'un a déjà une clé pour vous dérober en quelques secondes sans faire de recherche.



Comment les désactiver sur WordPress ?



Voici alors le tutoriel pour désactiver ces deux portes si vous n'en utilisez pas ! Dans ce tutoriel, il faut toucher aux scripts. Si vous n'êtes pas vraiment familier, il y a quelques plugins comme SecuPress qui le font (à explorer par vous-même).



Désactiver REST API



Ouvrez votre fichier functions.php dans le dossier de votre thème. Ajoutez ces lignes au bout du fichier :




// Disable REST API 



remove_action( 'init',          'rest_api_init' );

remove_action( 'parse_request', 'rest_api_loaded' );



remove_action( 'xmlrpc_rsd_apis',            'rest_output_rsd' );

remove_action( 'wp_head',                    'rest_output_link_wp_head' );

remove_action( 'template_redirect',          'rest_output_link_header', 11 );

remove_action( 'auth_cookie_malformed',      'rest_cookie_collect_status' );

remove_action( 'auth_cookie_expired',        'rest_cookie_collect_status' );

remove_action( 'auth_cookie_bad_username',   'rest_cookie_collect_status' );

remove_action( 'auth_cookie_bad_hash',       'rest_cookie_collect_status' );

remove_action( 'auth_cookie_valid',          'rest_cookie_collect_status' );



add_filter( 'rest_enabled',       '__return_false' );

add_filter( 'rest_jsonp_enabled', '__return_false' );




Désactiver XML RPC



Toujours dans functions.php, ajoutez ces lignes :




add_filter( 'xmlrpc_enabled', '__return_false' );

remove_action( 'wp_head', 'rsd_link' );




Et voilà. Cependant, il faut savoir que le tableau de bord WordPress utilisera bientôt le REST API. Donc, dans les prochaines versions de WordPress, il se pourrait que ces scripts vous jouent des mauvais tours. Rappelez-vous donc ce que vous avez fait.