En un artículo anterior habíamos visto como deshabilitar completamente la REST API de WordPress, sin embargo en algunos casos es posible que sólo necesitemos eliminar ciertos endpoints como los del usuario.
Generalidades
WordPress por defecto habilita la funcionalidad de REST API, el endpoint de usuarios podría ser explotado por un atacante ya que expone a parte de la información de los usuarios.
Si usamos la siguiente URL: https://ift.tt/gK29EZr , veremos un listado de usuarios tal como se muestra en la siguiente imagen.

Aqui se muestra el nombre del usuario que podría ser aprovechado para un ataque de fuerza bruta intentando adivinar la clave.
Código PHP para eliminar el endpoint de usuarios
La opción más práctica sería directamente quitar el endpoint de usuarios de la API REST de WordPress, podemos hacerlo usando el siguiente código como parte del archivo functions.php de tu tema hijo o usando algún plugin de Snippets.
add_filter( 'rest_endpoints', function( $endpoints ) {
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
}, 10, 1 );
En el código anterior:
- En el código anterior usamos el Hook rest_endpoints que hacer referencia a la función anónima
- Dentro de la función verificamos si se trata de un endpoint de usuarios, tanto para la lista como para usuarios individuales, para verificar esto último se usan expresiones regulares
- Si se cumple alguna de estas condiciones entonces se elimina del array de endpoints con la función unset
- Finalmente retornamos los endpoints restantes
Tras agregar este código y tratar de acceder veremos algo similar a lo siguiente:

Restricción de Endpoint por .htaccess
La otra opción para restringir el acceso a la URL del endpoint es hacerlo a través del archivo .htaccess, puedes usar el siguiente código:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-json/wp/v2/users [NC]
RewriteRule .* - [F,L]
</IfModule>
Puedes agregar este código al inicio de tu archivo .htaccess
Tras agregar este código verás una restricción de .htaccess, tal como se muestra en la siguiente imagen:

Conclusión
Como has podido comprobar, es posible mejorar la seguridad de tu sitio conservando ciertos endpoints de la REST API de WordPress y limitar otros para que no sean accesibles, en este artículo hemos visto como realizarlo a través de código.
La entrada Deshabilitar Información de Usuarios de la REST API de WordPress es un artículo reciente del sitio DecodeCMS.
0 Commentaires