¿Cuál es la mejor manera de eliminar el archivo xmlrpc.php de WordPress cuando no lo necesita?
fuente
¿Cuál es la mejor manera de eliminar el archivo xmlrpc.php de WordPress cuando no lo necesita?
Desde WordPress 3.5, esta opción ( XML-RPC
) está habilitada de forma predeterminada, y la capacidad de desactivarlo desde WordPress dashboard
ha desaparecido.
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 ser intensivo cuando un sitio está bajo ataque al golpearlo.
Es mejor que use el siguiente fragmento de código en su .htaccess
archivo.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
O use esto para deshabilitar el acceso al xmlrpc.php
archivo desde el 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 cierto, la aplicación móvil de WordPress necesita esto.
Ver Codex para más información sobre el uso deXML-RPC
.
- Haga siempre una copia de seguridad de los archivos antes de editar / agregar.
@Prosti, -Usted tiene toda la razón- acerca de las opciones que RESTful API
ofrecerá para WordPress.
Olvidé mencionar esto. Ya debería haberse integrado en el núcleo ( WordPress versión 4.1 ) que no era posible en ese momento. Pero como parece, será fundamental en WordPress 4.5.
La alternativa por el momento es este complemento: WordPress REST API (Versión 2)
Puede usarlo hasta Restful API
que también sea el núcleo de WordPress.
Fecha objetivo para el lanzamiento de WordPress 4.5. (12 de abril de 2016 (+ 3w))
Para aquellos que estén interesados
RESTful
, en Stackoverflow es una wiki comunitaria muy agradable.
X-Pingback
encabezado para publicación / página única. Tenemos que utilizar otro filtro para eliminar por completo:add_filter('pings_open', '__return_false', PHP_INT_MAX);
.functions.php
perderá todo efecto al cambiar de tema.function.php
es solo para fines de diseño, ¡use un complemento!=
falta un signo igual ( ) en la primera línea del código nginx conf allí. Esto funcionó para mí:location = /xmlrpc.php {
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 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, use el
xmlrpc_methods
filtro para deshabilitar todos los métodos:Puede probar si funciona enviando una solicitud POST a xmlrpc.php con el contenido siguiente:
Si el filtro funciona, solo deben quedar 3 métodos:
puedes probarlo rápidamente con curl:
fuente
Estamos utilizando el archivo htaccess para protegerlo de los hackers.
fuente
Lo mejor que puede hacer es deshabilitar las
xmlrpc.php
funciones con un complemento en lugar de eliminar o deshabilitar el archivo en sí. El archivo en sí será reemplazado en las actualizaciones principales de WordPress, mientras que un complemento lo mantendrá deshabilitado después de las actualizaciones principales y si cambia los temas.Consulte https://wordpress.org/plugins/search.php?q=disable+xml-rpc para conocer los diferentes complementos. Todos tienen diferencias menores.
Estos complementos hacen lo mismo que una función agregada al
functions.php
archivo del tema o agregando unaorder,allow deny
regla a .htaccess (como se describe en otras respuestas), con la diferencia de que un complemento o función deshabilita las llamadas axmlrpc.php
través de PHP, y la regla en .htaccess funciona aprovechando mod_rewrite en el servidor web (es decir, Apache o Nginx). No existe una diferencia de rendimiento apreciable entre el uso de PHP y mod_rewrite en un servidor moderno.fuente
Para la minoría extrema que aloja WordPress en IIS, puede usar el módulo IIS URL Rewrite para hacer restricciones similares a las de htaccess. El siguiente ejemplo supone que la verdadera IP del cliente viene en el encabezado X-Fordered-For, la IP de la lista blanca conocida es 55.55.555.555 y que desea responder con un HTTP 404 a las IP que no son de la lista blanca.
fuente
De la primera manera, puede poner el código
add_filter('xmlrpc_enabled', '__return_false');
en el archivofunctions.php
o en el complemento específico del sitio. Claramente, ponerlo en un sitio específico es más recomendable que editar el archivofunctions.php
.y otras formas de eliminar xmlrpc
fuente
Recientemente instalé Wordfence que, a partir de la versión 6.3.12 tiene la capacidad de bloquear el acceso directo a cualquier ubicación. Poner /xmlrpc.php en la página de Opciones en la lista de direcciones IP de acceso prohibido "Bloquear inmediatamente las IP que acceden a estas URL" ahora muestra un intento de bloqueo cada 15 minutos.
Esto también tiene la ventaja de poder bloquear una URL para escapar de esos molestos bots que vuelven con una dirección IP diferente una y otra vez.
No sé si permite el uso de xmlrpc.php por parte de las aplicaciones para operaciones válidas.
Al principio tuve algunos problemas con la producción de errores 504 Timeout y 502 Bad Gateway en el servidor, pero parece haberse calmado.
Muy impresionado con el resultado hasta ahora y produjo un valioso perfil de limpieza después de que el sitio fue pirateado antes de instalar Wordfence y a pesar de tener siempre la última versión de WordPress y complementos.
Wordfence https://www.wordfence.com/
fuente
/xmlrpc.php
a una regla de seguridad que prohíbe las IP que acceden parece que podría bloquear el tráfico legítimo. Si un sitio con pingbacks habilitó enlaces a su sitio, ese sitio enviará una solicitud a esa URL e inmediatamente se bloqueará ... parece que podría causar problemas.Yo uso para nginx este pequeño código y esto funciona al 100%
fuente