Risposte:
Da WordPress 3.5 questa opzione ( XML-RPC
) è abilitata per impostazione predefinita e la possibilità di disattivarla da WordPress dashboard
è sparita.
Aggiungi questo snippet di codice da utilizzare in 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;
}
Anche se fa quello che dice, può diventare intenso quando un sito è sotto attacco colpendolo.
È possibile utilizzare il seguente frammento di codice nel .htaccess
file.
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
Oppure usa questo per disabilitare l'accesso al xmlrpc.php
file dal blocco server NGINX.
# nginx block xmlrpc.php requests
location /xmlrpc.php {
deny all;
}
Tieni presente che anche la disabilitazione può avere un impatto sugli accessi tramite dispositivo mobile. Se sono corretto, l'app per dispositivi mobili WordPress ha bisogno di questo.
Vedi Codex per maggiori informazioni sull'uso diXML-RPC
.
- Effettuare sempre un backup dei file prima di modificarli / aggiungerli.
@Prosti, -Sei assolutamente corretto- riguardo alle opzioni che RESTful API
offriranno per WordPress!
Ho dimenticato di menzionarlo. Avrebbe dovuto già essere integrato nel core ( WordPress versione 4.1 ) che non era possibile in quel momento. Ma a quanto pare, sarà fondamentale in WordPress 4.5.
L'alternativa per il momento è questo plugin: API REST di WordPress (versione 2)
Puoi usarlo fino a quando non Restful API
è anche il core di WordPress.
Data prevista per il rilascio di WordPress 4.5. (12 aprile 2016 (+ 3w))
Per coloro che sono interessati
RESTful
, su Stackoverflow è una wiki della community molto bella.
X-Pingback
intestazione per singolo post / pagina. Abbiamo bisogno di usare un altro filtro per rimuoverlo completamente: add_filter('pings_open', '__return_false', PHP_INT_MAX);
.
functions.php
perderà tutti gli effetti quando si cambiano i temi. function.php
è solo a scopo di progettazione, utilizzare un plug-in!
=
manchi un segno di uguale ( ) nella prima riga del codice conf di nginx. Questo ha funzionato per me: location = /xmlrpc.php {
Quando hai la possibilità di bloccarlo tramite la configurazione del tuo server web, i suggerimenti di @Charles sono buoni.
Se puoi disabilitarlo solo usando php, il xmlrpc_enabled
filtro non è nel modo giusto. Come documentato qui:
https://developer.wordpress.org/reference/hooks/xmlrpc_enabled/
disabilita solo i metodi xml rpc che richiedono l'autenticazione.
Utilizza invece il xmlrpc_methods
filtro per disabilitare tutti i metodi:
<?php
// Disable all xml-rpc endpoints
add_filter('xmlrpc_methods', function () {
return [];
}, PHP_INT_MAX);
Puoi verificare se funziona inviando una richiesta POST a xmlrpc.php con il seguente contenuto:
<methodCall>
<methodName>system.listMethods</methodName>
</methodCall>
Se il filtro funziona, dovrebbero essere rimasti solo 3 metodi:
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<string>system.multicall</string>
</value>
<value>
<string>system.listMethods</string>
</value>
<value>
<string>system.getCapabilities</string>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
puoi testarlo rapidamente con l'arricciatura:
curl -X POST \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/xml' \
-d '<methodCall><methodName>system.listMethods</methodName></methodCall>' \
https://your-wordpress-site.com/xmlrpc.php
Stiamo usando il file htaccess per proteggerlo dagli hacker.
# BEGIN protect xmlrpc.php
<files xmlrpc.php>
order allow,deny
deny from all
</files>
# END protect xmlrpc.php
La cosa migliore da fare è disabilitare le xmlrpc.php
funzioni con un plugin anziché eliminare o disabilitare il file stesso. Il file stesso verrà sostituito dagli aggiornamenti core di WordPress, mentre un plug-in lo manterrà disabilitato dopo gli aggiornamenti core e se cambi temi.
Vedi https://wordpress.org/plugins/search.php?q=disable+xml-rpc per diversi plugin. Tutti hanno differenze minori.
Questi plugin fanno la stessa cosa di una funzione aggiunta al functions.php
file del tema o aggiungono una order,allow deny
regola a .htaccess (come indicato in altre risposte), con la differenza che un plugin o una funzione disabilita le chiamate xmlrpc.php
tramite PHP e la regola in .htaccess funziona sfruttando mod_rewrite nel webserver (cioè Apache o Nginx). Non vi è alcuna differenza di prestazioni apprezzabile tra l'utilizzo di PHP e mod_rewrite su un server moderno.
Per l'estrema minoranza che ospita WordPress in IIS, è possibile utilizzare il modulo di riscrittura degli URL IIS per applicare restrizioni simili a htaccess. Nell'esempio seguente si presuppone che l'IP client reale arrivi nell'intestazione X-Forwarded-For, l'IP whitelist noto è 55.55.555.555 e che si desidera rispondere con un HTTP 404 a IP non autorizzati.
<rule name="wordpress-restrictions" enabled="true" stopProcessing="true">
<match url="(^xmlrpc.php)|(^wp-admin)|(^wp-login.php)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_X_FORWARDED_FOR}" pattern="(^55\.55\.555\.555$)" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="404" subStatusCode="44" statusReason="File or directory not found" statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>
Nel primo modo puoi inserire il codice add_filter('xmlrpc_enabled', '__return_false');
nel file functions.php
o nel plugin specifico del sito. Metterlo chiaramente nel sito specifico è più consigliato della modifica del file functions.php
.
Di recente ho installato Wordfence che, a partire dalla versione 6.3.12, ha la possibilità di bloccare l'accesso diretto a qualsiasi posizione. Mettere /xmlrpc.php nella pagina Opzioni nell'elenco degli IP ad accesso vietato " Blocca immediatamente gli IP che accedono a questi URL" ora mostra un tentativo di blocco ogni 15 minuti circa.
Ciò ha anche il vantaggio di essere in grado di bloccare un URL per sfuggire a quei fastidiosi robot che tornano con un indirizzo IP diverso più volte.
Non so se consente l'utilizzo di xmlrpc.php da parte di Apps per operazioni valide.
Ho avuto alcuni problemi con la produzione di errori 504 Timeout e 502 Bad Gateway sul server all'inizio, ma sembra essersi risolto.
Sono rimasto molto colpito dal risultato finora e ha prodotto un prezioso profilo di pulizia dopo che il sito era stato violato prima di installare Wordfence e nonostante avesse sempre l'ultima versione di WordPress e plugin.
/xmlrpc.php
a una regola di sicurezza che vieta gli IP che vi accedono sembra che potrebbe bloccare il traffico legittimo. Se un sito con pingback abilitato collega il tuo sito, quel sito invierà una richiesta a quell'URL e verrà immediatamente bloccato ... sembra che potrebbe causare problemi.