Comment désactiver l’API Json de WordPress

WordPress depuis sa version 4.7 a intégré une API (Interface de Programmation Applicative) afin de simplifier les échanges et développer de nouvelles application autour de WordPress. C’est en quelque sorte une interface qui permet aux développeur d’interroger WordPress depuis un autre site, depuis une application mobile, ou tout autre applicatif externe.

Par exemple :

  • Lorsque l’on veut interroger Twitter pour récupérer les derniers tweets, on utilise l’API Twitter.
  • Lorsque l’on veut interroger Facebook pour obtenir le nombre de like sur une page, on utilise l’API Facebook

 

Le problème :

Si en général, les accès aux API sont bien sécurisés (grâce à des protocoles tels que OAuth), ce n’est pas le cas de WordPress qui peut donner accès à certaines informations sensibles à des gens mal-attentionnés. Egalement, des failles ont étés repérées récemment par le biais de l’API : voir par exemple la faille (depuis patchée par WP) qui existait sur WP 4.7.1 sur le blog de SecuPress.

Les solutions :

Si vous êtes à l’aise avec le php :

Vous pouvez intégrer le code suivant dans le fichier functions.php de votre thème ou bien créer un mu-plugin.

 add_filter( 'rest_authentication_errors', 'DRA_only_allow_logged_in_rest_access' );

function DRA_only_allow_logged_in_rest_access( $access ) {
	if( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_cannot_access', __( 'Only authenticated users can access the REST API.', 'disable-json-api' ), array( 'status' => rest_authorization_required_code() ) );
    }
    return $access;
}
Disable Json API

 

Désormais, si vous essayez d’accéder à l’API, vous aurez un avertissement comme quoi vous devrez être identifié pour y accéder. Par exemple sur ce blog, vous pouvez tester directement avec ce lien : https://www.renaud-pacouil.fr/wp-json/

Si vous préférez utiliser un plugin :

Si vous n’êtes pas à l’aise avec le code et que vous préférez la simplicité, vous pouvez également installer un plugin qui va désactiver l’API.

Vous avez par exemple un plugin dédié à cela :

Disable REST API

Ou bien dans des plugins dédiés à la sécurité, tel que SecuPress :

SecuPress Free — Sécurité WordPress

 

 

Laissez un commentaire





Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.