• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Core / Deshabilitar Información de Usuarios de la REST API de WordPress

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

[ 12 febrero 2025 ] [ Autor: Jhon Marreros Guzmán ][ Core - Intermedio] [ ]

funcionalidad seguridad

Suscríbete a DecodeCMS:  

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://tusitio.com/wp-json/wp/v2/users , 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.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Usar la REST API para crear usuarios en WordPressUsar la REST API para crear usuarios en WordPress
  • Crear entradas con la REST API de WordPress desde un sitio web remotoCrear entradas con la REST API de WordPress desde un sitio web remoto
  • Deshabilitar la REST API de WordPressDeshabilitar la REST API de WordPress
  • REST API en WordPressCómo usar la REST API de WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (1 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Alberto Prado

    22 febrero, 2025

    Me imagino que es mucho mejor aplicar el cambio desde WordPress, asi cuando te llevas tu sitio web a otro servidor vas a conservar el cambio.

    • Jhon Marreros Guzmán

      22 febrero, 2025

      Hola, si, es una de las ventaja, pero ten en cuenta que si realizas un backup de tu sitio con algún plugin, este te empaqueta también tu .htaccess.
      Saludos.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Usar funciones de WordPress fuera de WordPress

Eliminar el selector de idioma en el acceso a WordPress

Evitar la selección de texto, copiar y pegar en WordPress

Agregar el campo de cantidad en la lista de productos de WooCommerce

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados