¿Qué es XML-RPC en WordPress?

Escrito por Lucas Semelin
marzo 12, 2021

XML-RPC es una característica de WordPress que le permite a tu sitio web comunicarse con otras plataformas. A través de este canal de comunicación, se pueden conectar clientes de correo, procesadores de texto, incluso otras webs de blogging pueden comunicarse con tu WordPress para hacer trackbacks y pingbacks.

Si alguna vez utilizaste la aplicación para celulares de WordPress, originalmente se comunicaba a través de XML-RPC. Jetpack utiliza XML-RPC para comunicar datos a tu cuenta de WordPress.com, según lo informan en su sitio web. Por lo tanto, si utilizás Jetpack, ya te anticipamos que NO bloquees el XML-RPC.

En la versión 4.7 de WordPress, se implementó de forma nativa la comunicación a través de API Rest. Si bien la mayoría de las conexiones con WordPress se realizan utilizando su API Rest, el núcleo de WordPress todavía tiene incorporado el formato de intercambio XML-RPC, principalmente para evitar problemas de compatibilidad con sitios web y plugins que aún utilizan este canal.

¿Cómo saber si tenés el XML-RPC bloqueado en tu sitio web?

Existen algunas formas para verificar si tu sitio web tiene bloqueado el XML-RPC.

La primera y la que te recomendamos por ser muy sencilla, es ingresar en el navegador https://dominio.com/xmlrpc.php, es decir la URL de tu sitio web seguido del nombre del archivo xmlrpc.php. Por ejemplo, podés ingresar https://experienciasdigitales.studio/xmlrpc.php

Si te aparece un mensaje similar al siguiente: “XML-RPC server accepts POST requests only” quiere decir que XML-RPC está habilitado. Por el contrario si te aparece un error “403 Forbidden» o similar, entonces está bloqueado.

La segunda forma de chequear es a través del sitio web https://xmlrpc.eritreo.it/ . En este sitio ingresás la URL, hacés click en “Check” y te dirá el estado del XML-RPC. Es importante que sepas que si vas a utilizar este sitio web, no ingreses ni tu usuario ni tu contraseña. Para este tipo de chequeos, no son necesarios.

¿Por qué es peligroso tener el XML-RPC habilitado?

El principal problema de dejar habilitado el XML-RPC en WordPress es la seguridad. Hay diversas formas de atacar un sitio web utilizando XML-RPC. Las más destacadas son el «ataque de fuerza bruta» o brute force attack, y la “denegación distribuida de servicios” o DDoS (distributed denial of services).

El archivo xmlrpc.php se encuentra en la raíz de nuestro sitio web (al mismo nivel donde se encuentran las carpetas wp-content, wp-admin, el archivo wp-config.php, etc.).

Este archivo, encargado de permitir la conexión a través de XML-RPC no representa un peligro en sí mismo. De hecho, podrías eliminarlo sin que tu sitio web se vea perjudicado. Esta solución no la recomendamos en absoluto ya que primero, es parte del núcleo mismo de WordPress y cualquier chequeo de integridad del mismo te va a arrojar el error de que falta dicho archivo. Y segundo, cuando actualices la versión de WordPress, el archivo volverá a estar ahí, con lo cual tendrías que recordar eliminarlo cada vez que hagas una actualización de WordPress en tu sitio web.

¿Cómo bloquear o deshabilitar XML-RPC en WordPress?

Existen algunas alternativas para bloquear o deshabilitar el XML-RPC de tu sitio web. 

Utilizando plugins

La primera forma y más sencilla es a través de un plugin. Existen muchos plugins con esta funcionalidad. Al momento de publicar este artículo, el que tiene mejor puntaje es el “Disable XML-RPC-API de Neatmarketing: 

Modificando el archivo functions.php de tu theme

Podés agregar lo siguiente en el archivo functions.php de tu theme. Tené en cuenta que este método, si bien deshabilita la funcionalidad del XML-RPC, no impide que se puedan realizar ataques de fuerza bruta contra tu sitio web:

// Deshabilitar el uso de XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );

Modificando el archivo .htaccess (servidores Apache)

Para quienes tienen su sitio web WordPress alojado en servidores con Apache, la forma un poco más “complicada” y que requiere cierto conocimiento técnico, es agregando el siguiente código al archivo .htaccess de tu sitio web:

# Bloquear requests al archivo xmlrpc.php requests 
<Files xmlrpc.php> 
order deny,allow 
deny from all 
allow from xxx.xxx.xxx.xxx 
</Files>

Las xxx.xxx.xxx.xxx podés reemplazarlas por la IP a la que querés permitirle el acceso a través de XML-RPC.

Un dato importante sobre este archivo .htaccess: Es un archivo oculto que está ubicado en la raíz de tu sitio web, al igual que el archivo xmlrpc.php. Si cuando ingresás por FTP o cPanel no lográs verlo, tenés que habilitar la visualización de archivos ocultos.

Modificando el config de servidores Nginx

Si por el contrario tenés tu sitio web en WordPress alojado en un servidor que corre Nginx, entonces podés pegar el siguiente código en el config:

# Bloquear requests xmlrpc.php en nginx
location /xmlrpc.php {
    deny all;
}

Así que…

Recordá que si estás utilizando alguna plataforma que intercambie información con tu sitio web WordPress a través de XML-RPC o si utilizás el plugin Jetpack, entonces no bloquees este protocolo. Pero sino, es una buena medida para tener un sitio web más seguro.

En Experiencias Digitales sabemos cómo cuidar tu sitio web WordPress, ¡escribinos!

2 Comentarios

  1. Yandry

    Buen artículo, siempre tuve esa duda. Creo que también hay plugins de seguridad que permiten bloquear como el all in one security.. saludos

    Responder
    • lucassemelin

      Seguramente haya muchos plugins del estilo All In One y Wordfence que entre sus opciones de seguridad, ofrezcan el bloqueo de XML-RPC

      Responder

Dejar una respuesta a lucassemelin Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *