Ten en cuenta que en la informática un error suele tener más de una soluciones, por lo tanto aquí compartiremos la mejor y más eficiente.
Solución:
Desde WordPress 3.5 esta opción (XML-RPC
) está habilitado de forma predeterminada y la posibilidad de desactivarlo desde WordPress dashboard
se ha ido.
Agregue este fragmento de código para usarlo en functions.php
:
// Disable use XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );
// Disable X-Pingback to header
add_filter( 'wp_headers', 'disable_x_pingback' );
function disable_x_pingback( $headers )
unset( $headers['X-Pingback'] );
return $headers;
Aunque hace lo que dice, puede volverse intensivo cuando un sitio está bajo ataque al golpearlo.
Es mejor que utilice el siguiente fragmento de código en su .htaccess
expediente.
# Block WordPress xmlrpc.php requests
order allow,deny
deny from all
O use esto para deshabilitar el acceso a la xmlrpc.php
archivo del bloque del servidor NGINX.
# nginx block xmlrpc.php requests
location /xmlrpc.php
deny all;
Tenga en cuenta que la desactivación también puede tener un impacto en los inicios de sesión a través de dispositivos móviles. Si estoy en lo correcto, la aplicación móvil de WordPress necesita esto.
Consulte el Codex para obtener más información sobre el uso deXML-RPC
.
- Realice siempre una copia de seguridad de los archivos antes de editarlos o agregarlos.
Editar/Actualizar
@Prosti, -Tienes toda la razón- sobre las opciones que RESTful API
ofrecerá para WordPress!
Olvidé mencionar esto. Ya debería haber sido integrado en el núcleo (WordPress versión 4.1) que no era posible en ese momento. Pero por lo que parece, será core en WordPress 4.5.
La alternativa por el momento es este plugin: WordPress REST API (Version 2)
Puedes usarlo hasta Restful API
también es el núcleo de WordPress.
Fecha prevista para el lanzamiento de WordPress 4.5. (12 de abril de 2016 (+3 sem))
Para aquellos que estén interesados en
RESTful
en Stackoverflow es una wiki comunitaria muy agradable.
Cuando tiene la capacidad de bloquearlo a través de la configuración de su servidor web, las sugerencias de @Charles son buenas.
Si solo puede deshabilitarlo usando php, el xmlrpc_enabled
filtro no es el camino correcto. Como se documenta aquí: https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/ solo deshabilita los métodos xml rpc que requieren autenticación.
En su lugar, utilice el xmlrpc_methods
filtro para deshabilitar todos los métodos:
Puede probar si funciona enviando una solicitud POST a xmlrpc.php con el siguiente contenido:
system.listMethods
Si el filtro funciona, solo deberían quedar 3 métodos:
system.multicall
system.listMethods
system.getCapabilities
puedes probarlo rápidamente con curl:
curl -X POST
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/xml'
-d 'system.listMethods '
https://your-wordpress-site.com/xmlrpc.php
Estamos utilizando el archivo htaccess para protegerlo de los piratas informáticos.
# BEGIN protect xmlrpc.php
order allow,deny
deny from all
# END protect xmlrpc.php
Si te ha sido de ayuda este post, te agradeceríamos que lo compartas con otros seniors y nos ayudes a difundir este contenido.