Saltar al contenido
Codif铆ca.me | Desarrollo web | Programaci贸n

C贸mo deshabilitar el API REST de WordPress

20 diciembre, 2021
seguridad wp

El API Rest de WordPress es una interface que nos vale a los desarrolladores para enviar y recibir datos sin tener que hacerlo manualmente y sin tener que inventar una aplicaci贸n para comunicarnos con la web, todo esto ya est谩 desarrollado por wp.

C贸mo acabo de comentar el uso principal del API es comunicarse con WordPress utilizando un lenguaje de programaci贸n como puede ser PHP, Python, o el que te venga mejor siempre que puedas enviar una petici贸n contra la web.

Adem谩s hay algunos plugin que tambi茅n lo utilizan internamente para comunicarse con WordPress. Y por supuesto tambi茅n la usan para gestionar remotamente WordPress con wp-cli.

Por otro lado, te puedes imaginar que todo esto ayuda a hackers y programadores con no tan buenas intenciones a conectarse con tu web desde cualquier otra m谩quina remota.

Deshabilitar el API REST de WordPress

Cualquier API es muy 煤til para desarrolladores y programadores,聽 ya que va a hacer mas sencillo obtener y enviar informaci贸n haciendo peticiones web y viendo el resultado en formato json.

wordpress API

Para probar el funcionamiento del API es muy f谩cil. Puedes usarlo contra cualquier web desde tu navegador y ver toda la informaci贸n que muestra. En la barra de direcciones a帽ade /wp-json al nombre del dominio, y te mostrar谩 la informaci贸n de esa p谩gina.

El API muestra mucha informaci贸n, pero como he comentado antes el problema es que cualquiera puede usarla para obtener f谩cilmente informaci贸n de tu sitio.

Por ejemplo, puedes obtener un listado de los usuarios de tu sitio a帽adiendo /wp-json/wp/v2/users al nombre de tu dominio.

Si no utilizas para nada el API REST te recomiendo desactivarlo para ganar seguridad.

C贸mo deshabilitar el API con c贸digo

Si eres maquetador o desarrollas temas de WordPress puedes desactivar el API por c贸digo. Solo tienes que a帽adir est谩 funci贸n en el functions.php de tu theme o tu child theme.

add_filter( 'rest_authentication_errors', function( $result ) {
   return new WP_Error( 
          'rest_not_logged_in', 
          'Bye bye.', 
          array( 'status' => 401 ) 
        );   
});

Con este filtro ya no admites peticiones al API bloqueando cualquier petici贸n.

Graba los cambios en el fichero functions.php y listo, todas las peticiones bloquedas.

Saludos!