Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Deshabilitar Información de Usuarios de la REST API de WordPress

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.

Lista usuarios REST API

 
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:

Mensaje endpoint restringido

 

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:

Mensaje .htaccess

 

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.

Enregistrer un commentaire

0 Commentaires