Qual é a melhor maneira de eliminar o arquivo xmlrpc.php do WordPress quando você não precisa?
fonte
Qual é a melhor maneira de eliminar o arquivo xmlrpc.php do WordPress quando você não precisa?
Desde o WordPress 3.5, esta opção ( XML-RPC
) é ativada por padrão, e a capacidade de desativá-la do WordPress dashboard
desaparece.
Adicione este snippet de código para uso em 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;
}
Embora faça o que diz, pode ficar intensivo quando um site está sob ataque ao atingi-lo.
Você pode usar o seguinte snippet de código no seu .htaccess
arquivo.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
Ou use-o para desativar o acesso ao xmlrpc.php
arquivo no bloco do servidor NGINX.
# nginx block xmlrpc.php requests
location /xmlrpc.php {
deny all;
}
Esteja ciente de que a desativação também pode ter impacto nos logins pelo celular. Se eu estiver correto, o aplicativo móvel do WordPress precisa disso.
Veja Codex para mais informações sobre o uso deXML-RPC
.
- Faça sempre um backup do (s) arquivo (s) antes de editar / adicionar.
@Prosti, -Você está absolutamente correto- sobre as opções que RESTful API
oferecerão para o WordPress!
Eu esqueci de mencionar isso. Ele já deveria ter sido integrado ao núcleo ( WordPress versão 4.1 ), o que não era possível naquele momento. Mas, ao que parece, será essencial no WordPress 4.5.
A alternativa no momento é este plugin: API REST do WordPress (versão 2)
Você pode usá-lo até que Restful API
também seja essencial para o WordPress.
Data prevista para o lançamento do WordPress 4.5. (12 de abril de 2016 (+ 3 sem))
Para aqueles que estão interessados
RESTful
, no Stackoverflow é um wiki muito bom da comunidade.
X-Pingback
cabeçalho para uma única postagem / página. Precisamos usar outro filtro para removê-lo completamente:add_filter('pings_open', '__return_false', PHP_INT_MAX);
.functions.php
perderá todo o efeito ao alterar os temas.function.php
é apenas para fins de design, use um plugin!=
) ausente na primeira linha do código conf nginx. Isso funcionou para mim: #location = /xmlrpc.php {
Estamos usando o arquivo htaccess para protegê-lo contra hackers.
fonte
Quando você pode bloqueá-lo através da configuração do servidor da web, as sugestões do @Charles são boas.
Se você só pode desativá-lo usando php, o
xmlrpc_enabled
filtro não é o caminho certo. Como documentado aqui: https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/ , desativa apenas métodos xml rpc que requerem autenticação.Em vez disso, use o
xmlrpc_methods
filtro para desativar todos os métodos:Você pode testar se está funcionando enviando uma solicitação POST para xmlrpc.php com o seguinte conteúdo:
Se o filtro estiver funcionando, restarão apenas três métodos:
você pode testá-lo rapidamente com curl:
fonte
A melhor coisa a fazer é desativar as
xmlrpc.php
funções com um plug-in em vez de excluir ou desativar o próprio arquivo. O arquivo em si será substituído nas atualizações principais do WordPress, enquanto um plug-in o manterá desativado após as atualizações principais e se você alterar os temas.Veja https://wordpress.org/plugins/search.php?q=disable+xml-rpc para obter diferentes plugins. Todos eles têm pequenas diferenças.
Esses plug-ins fazem a mesma coisa que uma função adicionada ao
functions.php
arquivo do tema ou adicionando umaorder,allow deny
regra ao .htaccess (conforme descrito em outras respostas), com a diferença de que um plug-in ou função desativa as chamadasxmlrpc.php
via PHP e a regra no .htaccess funciona aproveitando o mod_rewrite no servidor da web (ou seja, Apache ou Nginx). Não há diferença significativa de desempenho entre o uso de PHP e mod_rewrite em um servidor moderno.fonte
Para a minoria extrema que hospeda o WordPress no IIS, você pode usar o módulo IIS URL Rewrite para fazer restrições semelhantes ao htaccess. O exemplo abaixo pressupõe que o IP do cliente verdadeiro está chegando no cabeçalho X-Forwarded-For, o IP da lista de desbloqueio conhecido é 55.55.555.555 e que você deseja responder com um HTTP 404 para IPs que não sejam da lista de desbloqueio.
fonte
Da primeira maneira, você pode colocar o código
add_filter('xmlrpc_enabled', '__return_false');
no arquivofunctions.php
ou no plug-in específico do site. Colocá-lo claramente no site é mais recomendado do que editar o arquivofunctions.php
.e outras maneiras de eliminar xmlrpc
fonte
Instalei recentemente o Wordfence que, a partir da versão 6.3.12, pode bloquear o acesso direto a qualquer local. Colocar /xmlrpc.php na página Opções na lista de IPs de acesso proibido "Bloquear imediatamente IPs que acessam esses URLs" agora está mostrando uma tentativa de bloqueio a cada 15 minutos.
Isso também tem a vantagem de poder bloquear uma URL para escapar daqueles bots traquinas que retornam com um endereço IP diferente várias vezes.
Não sei se ele permite o uso do xmlrpc.php pelo Apps para operações válidas.
Eu tive alguns problemas com a produção de erros 504 Timeout e 502 Bad Gateway no servidor no início, mas parece que ele se acalmou.
Muito impressionado com o resultado até agora e produziu um valioso perfil de limpeza após o site ter sido hackeado antes de instalar o Wordfence e apesar de sempre ter a versão mais recente do WordPress e plugins.
Wordfence https://www.wordfence.com/
fonte
/xmlrpc.php
uma regra de segurança que proíbe IPs que acessam, parece que ele pode bloquear o tráfego legítimo. Se um site com pingbacks ativado vincular ao seu site, ele enviará uma solicitação para esse URL e será imediatamente bloqueado ... parece que isso pode causar problemas.eu uso para nginx este pequeno código e isso funciona 100%
fonte