Según podemos leer en la Wikipedia, XML-RPC es un protocolo de llamada a procedimiento remoto (Remote Procedure Call) que usa el formato XML para codificar los datos y utiliza el protocolo web (HTTP) para la transmisión de los datos.
Dentro de la plataforma WordPress podríamos traducir esta frase como el sistema que permite la ejecución de instrucciones en nuestro blog de forma remota.
Gracias a este sistema podemos publicar de forma remota o gestionar nuestro blog con la aplicación móvil de WordPress, pero claro se trata de una herramienta de gestión que es muy probable que la gran mayoría de usuarios no utilicemos (y muchos ni siquiera conozcan).
A partir de WordPress 3.5 se habilitó esta posibilidad de gestión remota por defecto (antes era opcional), llegando incluso a quitar la opción de activar o desactivarlo desde los ajustes del panel de control. Por el principio de mínima exposición si no vamos a utilizarlo es preferible bloquearlo.
Cómo bloquear el acceso al sistema XML-RPC
Ya que no existe la posibilidad de deshabilitar el sistema XML-RPC en los ajustes de WordPress, tenemos dos opciones:
- Utilizar un plugin específico como puede ser Disable XML-RPC.
- Utilizar el fichero .htaccess de nuestro blog para bloquear el acceso. Esta es la opción que veremos a continuación
Bloquear acceso al fichero xmlrpc.php desde .htaccess
Utilizaremos las opciones de gestión de ficheros del archivo .htaccess para bloquear cualquier acceso al fichero xmlrpc.php, deshabilitando así esta funcionalidad de control remoto.
En la primera captura podéis ver cómo se ve un acceso al fichero xmlrpc.php desde un navegador normal: nos avisa de que el formato recibido no es el esperado pero el mero hecho de que responda demuestra que el servicio está activo.
Para bloquear el acceso a este fichero bastará con añadir al fichero .htaccess las siguientes líneas:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
Con esto indicamos al servidor que cualquier acceso al fichero xmlrpc.php debe ser bloqueado. Si intentamos acceder al fichero con nuestro navegador veremos un mensaje del servidor indicando que no estamos autorizados a acceder. Así eliminamos la posibilidad de que nadie acceda a la gestión de nuestro WordPress desde este entorno.