La API REST de WordPress se introdujo en el core de WordPress a finales de 2016 con la salida de WordPress 4.6. Como todos los cambios grandes que aparecen en la plataforma, la API REST generó controversia en unos e indiferencia en otros.
Es posible incluso que no tengas ni idea de lo que es, pero si tienes una versión actualizada de WordPress (y deberías) que sepas que estás exponiendo muchos aspectos de tu web públicamente mediante la API REST. Tan solo tienes que añadir el fragmento /wp-json/
a continuación de tu nombre de dominio y visitar esta URL para verlo con tus propios ojos.
Es más, haz el ejercicio de visitar las siguientes direcciones web y quizás te sorprenda lo que te encontrarás:
tudominio.com/wp-json/wp/v2/users
tudominio.com/wp-json/wp/v2/posts
Como resultado de la primera URL tendrás un JSON con los datos de los usuarios de tu web. Fíjate que se incluye el identificador del usuario, algo que tradicionalmente se intenta ocultar por temas de seguridad y prevenir posibles ataques.
En cuanto a la segunda URL, nos muestra una lista con las últimas entradas. No obstante, si tienes contenido protegido que sólo quieres mostrar a ciertos usuarios premium de tu web (si tienes un membership site, por ejemplo), es posible que a través de la API REST tengas el contenido desprotegido.
Veamos cómo podemos evitar situaciones comprometidas siendo más conscientes de lo que públicamente exponemos a través de la API REST de WordPress.
Mostrar la REST API sólo a usuarios registrados
Una solución que podemos implementar para ocultar la API REST de WordPress es evitar que aquellos usuarios que no estén registrados en nuestra web puedan acceder a esta.
Para ocultar la API REST a usuarios no registrados, debemos añadir el siguiente código en nuestro WordPress. Recuerda que lo puedes meter en el archivo functions.php
de tu tema o bien hacerte un plugin (mucho mejor opción).
Una vez hayas metido este código en tu WordPress, si ahora intentas acceder a una ruta de la REST API en tu web y no estás logueado, no verás más que un mensaje de error como respuesta. Tus contenidos estarán protegidos.
Mostrar la REST API sólo a usuarios administradores
Ahora imagínate que lo que quieres es que sólo los usuarios con el rol de Administrador en tu WordPress puedan tener acceso a la REST API. En este caso el código que has de utilizar es el siguiente:
Fíjate en que ahora la comprobación la hacemos utilizando la función current_user_can
de WordPress. Si quisieras hacer la comprobación con un rol diferente al de administrador, podrías hacer el cambio correspondiente en esta función y listo.
Y si se te ocurre una manera mejor de evitar el acceso a la API REST de WordPress o bien en tu caso lo haces diferente, no dudes en dejarme un comentario más abajo. Siempre es interesante conocer otros puntos de vista ☺️.

Nelio Content
Estoy tan contento con Nelio Content que parece que me hayan pagado para hablar bién de él… pero es que también a ti te encantará: funciona como prometen, la programación automática de mensajes es increíble, la calidad/precio no tiene parangón y su equipo de soporte se siente como si fueran parte del tuyo.

Panozk
Plugins para desactivar la REST API en WordPress
En caso de que quieras hacer cambios más complejos, tienes la posibilidad de utilizar plugins para desactivar la API REST de WordPress.
Hay varios plugins que te permiten desactivar la API REST en WordPress, pero el que te recomiendo es Disable REST API de Dave McHale.

Por defecto, este plugin ya evita que los usuarios no registrados puedan acceder a la API REST de tu WordPress. Pero además, el plugin Disable REST API te permite seleccionar qué rutas de la API están activas y cuáles quieres desactivar en tu web.
De este modo, controlar qué datos e información es pública en tu web a través de la API REST de WordPress es tremendamente sencillo.
Imagen destacada de Ben Hershey en Unsplash.
Deja una respuesta