Deshabilitar el Rest API y sus Links en WordPress

Manuel Campos

La API REST de WordPress se introdujo en el núcleo de WordPress a finales de 2016 con el lanzamiento de WordPress 4.6.

Como todos los grandes cambios que aparecen en la plataforma, la API REST generó controversia en algunos e indiferencia en otros.

Si tienes una versión actualizada de WordPress estás exponiendo públicamente muchos aspectos de tu sitio web a través de la REST API.

En esta publicación encontrarás la manera de deshabilitar la REST API y los enlaces que esta funcionalidad agrega al código fuente de tu sitio.



Verificar la Activación del Rest API en WordPress

Si deseas verificar si el REST API se encuentra activado en tu sitio, simplemente agrega el fragmento / wp-json / a tu nombre de dominio y puedes ver la información que estas compartiendo públicamente

https://ejemplo.com/wp-json/

Además, realiza el ejercicio de visitar las siguientes URLs

https://ejemplo.com/wp-json/wp/v2/users

https://ejemplo.com/wp-json/wp/v2/posts

Como resultado de la primera URL, tendrás un archivo JSON con los datos de los usuarios de tu web.

La segunda URL nos muestra una lista con las últimas publicaciones.


Mostrar API REST de WordPress solo a usuarios registrados

Una solución que podemos implementar para ocultar la API REST de WordPress es evitar que los usuarios que no están registrados en nuestro sitio web accedan a ella.

Para ocultar la API REST a usuarios no registrados, debemos agregar el siguiente código en el archivo functions.php

add_filter( 'rest_authentication_errors', function( $result ) {
  if ( ! empty( $result ) ) {
    return $result;
  }
  if ( ! is_user_logged_in() ) {
    return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
  }
  if ( ! current_user_can( 'administrator' ) ) {
    return new WP_Error( 'rest_not_admin', 'You are not an administrator.', array( 'status' => 401 ) );
  }
  return $result;
});

Una vez que haya puesto este código en su WordPress, acceder a una ruta de la REST API en su sitio web sin estar conectado dará como resultado un mensaje de error.


Deshabilitar REST API con MU-Plugin

Si deseas implementar ese code snippet sin la necesidad de un plugin, puedes crear un plugin y agregarlo en el folder mu-plugins.

Lo único que debes hacer es crear un archivo PHP, agregar el siguiente código y guardarlo en el folder de mu-plugins

<?php

/*
  Plugin Name: Rest API 
  Plugin URI: https://wpsurfer.com
  Description: Rest API Remover
  Version: 1.0
  Author: TicoLibre
  Author URI: https://wpsurfer.com
*/

add_filter( 'rest_authentication_errors', function( $result ) {
  if ( ! empty( $result ) ) {
    return $result;
  }
  if ( ! is_user_logged_in() ) {
    return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
  }
  if ( ! current_user_can( 'administrator' ) ) {
    return new WP_Error( 'rest_not_admin', 'You are not an administrator.', array( 'status' => 401 ) );
  }
  return $result;
});


remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('wp_head', 'wp_oembed_add_discovery_links');

Manuel Campos, English Professor

Manuel Campos

I am José Manuel. I am writing about things I know and things that I am learning about WordPress. I hope you find the content of this blog useful.

WP SURFER

home

about

privacy

contact

© 2024 WP SURFER • Made with Love in Costa Rica