Si gestionas un sitio web en WordPress, tarde o temprano te toparás con un archivo llamado xmlrpc.php
en la raíz de tu instalación. Aunque discreto, este archivo es una pieza histórica dentro del ecosistema WordPress. Durante años fue esencial para permitir la publicación remota, conectar apps móviles o integrar plugins avanzados como Jetpack.
Sin embargo, los tiempos han cambiado. Hoy en día, xmlrpc.php
es más una fuente potencial de vulnerabilidades que una necesidad real. En este artículo te explicamos qué hace, por qué sigue presente, qué riesgos supone y cómo puedes desactivarlo correctamente si no lo necesitas.
¿Qué es xmlrpc.php?
xmlrpc.php
es un archivo que permite que aplicaciones externas se comuniquen con WordPress utilizando el protocolo XML-RPC, un estándar que codifica comandos en XML y los transmite vía HTTP.
Este archivo permite, entre otras cosas:
- Publicar entradas desde aplicaciones móviles.
- Conectar herramientas externas sin usar el panel de WordPress.
- Sincronizar datos con plugins como Jetpack.
- Gestionar pingbacks y trackbacks entre blogs.
Fue especialmente útil cuando los dispositivos móviles comenzaron a integrarse en la administración de contenido, en una época anterior a la llegada de la REST API.
¿Por qué existe xmlrpc.php?
La funcionalidad remota que ofrecía era clave antes de que WordPress incorporase una API moderna. Entre sus usos más comunes:
- Publicación remota desde apps de escritorio o móviles.
- Intercambio de pingbacks y trackbacks entre blogs.
- Integración con servicios de terceros que automatizaban tareas o enviaban contenido.
Desde WordPress 3.5, xmlrpc.php
se activa por defecto. Sin embargo, desde WordPress 4.7, la REST API es el método preferido y más seguro para integrar sistemas externos.
REST API vs xmlrpc.php: ¿cuál es mejor?
Característica | xmlrpc.php | REST API de WordPress |
---|---|---|
Formato de datos | XML | JSON |
Protocolo | XML-RPC sobre HTTP | RESTful HTTP |
Autenticación | Usuario/Contraseña | OAuth, Application Passwords |
Extensibilidad | Limitada | Muy flexible |
Seguridad | Vulnerable a fuerza bruta/DDoS | Autenticación más robusta |
Estado actual | Deprecado (pero activo) | Recomendado desde WP 4.7 |
Conclusión: hoy en día, REST API ofrece mayor seguridad, mejor rendimiento y una integración más sencilla para desarrolladores.
Riesgos de seguridad asociados a xmlrpc.php
Aunque útil en su momento, xmlrpc.php
es un objetivo habitual de ataques automatizados:
- 🔓 Fuerza bruta por amplificación: permite hacer múltiples intentos de inicio de sesión en una sola solicitud (
system.multicall
). - 🚨 Ataques DDoS mediante pingbacks: el archivo puede ser usado para redirigir tráfico masivo a terceros como parte de una red de ataque.
- 🧾 Exposición de credenciales: envía usuario y contraseña en cada solicitud, lo que representa un riesgo en conexiones no cifradas.
- 🖥️ Sobrecarga del servidor: muchas llamadas simultáneas pueden agotar recursos, sobre todo en hosting compartido.
¿Cómo saber si xmlrpc.php está habilitado?
Método 1: Navegador
Abre https://tusitio.com/xmlrpc.php
en el navegador.
- Si ves el mensaje:
"XML-RPC server accepts POST requests only"
→ está habilitado. - Si obtienes error 403 o 404 → está bloqueado o deshabilitado.
Método 2: cURL en terminal
curl -d "<?xml version='1.0'?><methodCall><methodName>system.listMethods</methodName></methodCall>" https://tusitio.com/xmlrpc.php
Lenguaje del código: HTML, XML (xml)
- Si recibes una respuesta estructurada en XML → xmlrpc.php está activo.
¿Cómo desactivar xmlrpc.php?
1. 🔒 Bloquear con .htaccess
(servidores Apache)
Edita el archivo .htaccess
en el directorio raíz (/public_html
) y añade:
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
Lenguaje del código: HTML, XML (xml)
Para Apache 2.4 o superior:
<Files "xmlrpc.php">
Require all denied
</Files>
Lenguaje del código: HTML, XML (xml)
2. 🔧 Bloquear en NGINX
Añade esto en tu bloque del servidor (server {}
) dentro de nginx.conf
:
location = /xmlrpc.php {
deny all;
}
Recuerda reiniciar Nginx después:
sudo nginx -t
sudo systemctl reload nginx
¿Cuándo debes mantener xmlrpc.php habilitado?
Solo en casos muy concretos:
- Si usas Jetpack en modo remoto.
- Si gestionas entradas desde apps móviles antiguas.
- Si tu sitio depende de plugins antiguos que aún lo utilizan.
⚠️ Si no estás seguro, lo más recomendable es desactivarlo. La mayoría de servicios actuales ya utilizan la REST API.
Buenas prácticas adicionales
- 🛡️ Usa contraseñas fuertes y activa la autenticación en dos pasos (2FA).
- 🔄 Mantén WordPress y plugins actualizados.
- 🔍 Monitoriza el archivo de acceso (access.log) para detectar abusos.
- ⚙️ Utiliza plugins de seguridad como Wordfence, iThemes Security o Sucuri.
- 🧪 Prueba cualquier cambio primero en un entorno de staging o de desarrollo.
Preguntas frecuentes
❓ ¿Qué es xmlrpc.php
?
Es un archivo del núcleo de WordPress que permite conexiones remotas usando el protocolo XML-RPC.
❓ ¿Es seguro tenerlo activado?
No siempre. Si no lo usas, representa una puerta de entrada innecesaria para ataques automatizados.
❓ ¿Debo eliminarlo?
No se recomienda eliminar archivos del núcleo. Basta con bloquearlo por .htaccess
o nginx.conf
.
❓ ¿Afectará al SEO?
No. Este archivo no tiene relación con el rastreo o posicionamiento de tu sitio.
Conclusión
xmlrpc.php
fue vital en los inicios de WordPress, pero hoy está casi obsoleto. Si no lo necesitas, desactivarlo es una medida recomendada para reforzar la seguridad de tu web.
La clave está en conocer sus funciones, evaluar si tienes alguna dependencia y actuar en consecuencia. Porque en un entorno cada vez más expuesto a ciberataques, cerrar accesos innecesarios es siempre buena práctica.