La specifica XML-RPC di WordPress è stata sviluppata per standardizzare la comunicazione tra diversi sistemi, il che significa che le applicazioni al di fuori di WordPress (come altre piattaforme di blogging e client desktop) possono interagire con lo stesso WordPress.

Questa specifica è stata parte di WordPress fin dalla sua nascita e ha svolto un lavoro molto utile. Senza di essa, WordPress sarebbe stato nel suo silo, separato dal resto di internet.

Tuttavia, xmlrpc.php ha i suoi lati negativi. Può introdurre delle vulnerabilità nel vostro sito WordPress ed è stata ora sostituita dalla REST API di WordPress, che fa un lavoro molto migliore nell’aprire WordPress ad altre applicazioni.

In questo articolo, vi spiegheremo cos’è xmlrpc.php e perché dovreste disabilitarlo, e vi aiuteremo ad capire se è in esecuzione sul vostro sito WordPress.

Pronti? Cominciamo!

Cos’È xmlrpc.php?

XML-RPC è una specifica che consente la comunicazione tra WordPress e altri sistemi. È stato possibile farlo standardizzando tali comunicazioni, utilizzando HTTP come meccanismo di trasporto e XML come meccanismo di codifica.

XML-RPC è antecedente a WordPress: era presente nel software di blogging b2, da cui è nato il fork di WordPress nel 2003. Il codice che sta dietro il sistema è memorizzato in un file chiamato xmlrpc.php, nella directory principale del sito. Ed è ancora lì, anche se XML-RPC è in gran parte obsoleto.

Nelle prime versioni di WordPress, di default XML-RPC era disattivato. Ma dalla versione 3.5, è stato abilitato di default. Il motivo principale era quello di permettere all’applicazione mobile di WordPress di dialogare con l’installazione di WordPress.

Se avete utilizzato l’applicazione mobile di WordPress prima della versione 3.5, potreste ricordare di aver dovuto abilitare XML-RPC sul vostro sito per permettere all’applicazione di pubblicare contenuti. Questo perché l’app non utilizzava WordPress in sé, ma era un’app separata che comunicava con il vostro sito WordPress utilizzando xmlrpc.php.

Ma non è stata utilizzata solo l’applicazione mobile per l’XML-RPC: è stata utilizzata anche per consentire la comunicazione tra WordPress e altre piattaforme di blogging, ha abilitato i trackback e i pingback, e ha alimentato il plugin Jetpack, che collega un sito WordPress autoospitato a WordPress.com.

Ma, da quando l’API REST è stata integrata nel core di WordPress, il file xmlrpc.php non viene più utilizzato per questa comunicazione. Al suo posto viene invece utilizzata l’API REST per comunicare con l’applicazione mobile di WordPress, con i client desktop, con altre piattaforme di blogging, con WordPress.com (per il plugin Jetpack) e con altri sistemi e servizi. La gamma di sistemi con cui le REST API possono interagire è molto più ampia di quella consentita da xmlrpc.php. Inoltre, c’è molta più flessibilità.

Dato che l’API REST ha sostituito XML-RPC, ora si dovrebbe disabilitare xmlrpc.php sul proprio sito. Vediamo perché.

Perché si Dovrebbe Disabilitare xmlrpc.php

Il motivo principale per cui si dovrebbe disabilitare xmlrpc.php sul proprio sito WordPress è perché questo introduce vulnerabilità nella sicurezza e può essere bersaglio di attacchi.

Ora che XML-RPC non è più necessario per comunicare al di fuori di WordPress, non c’è più motivo di tenerlo attivo. Ecco perché è saggio rendere il vostro sito più sicuro disabilitandolo.

Se xmlrpc.php è una vulnerabilità di sicurezza e non svolge più un lavoro utile, perché non è stato eliminato del tutto da WordPress?

Il motivo è che una delle caratteristiche chiave di WordPress sarà sempre la compatibilità a ritroso. Se gestite bene il vostro sito, saprete che mantenere WordPress aggiornato, così come aggiornare regolarmente qualsiasi plugin o tema, è essenziale.

Ma ci saranno sempre proprietari di siti web che non vogliono o non possono aggiornare la loro versione di WordPress. Se hanno in esecuzione una versione precedente alla REST API, avranno comunque bisogno di accedere a xmlrpc.php.

Vediamo le vulnerabilità specifiche più dettagliatamente.

Attacchi DDoS tramite Pingback XML-RPC

Una delle funzioni abilitate da xmlrpc.php erano il pingback e il trackback. Queste sono le notifiche che appaiono nei commenti del vostro sito quando un altro blog o un altro sito si collega ai vostri contenuti.

La specifica XML-RPC ha reso possibile questa comunicazione, ma è stata sostituita dalla REST API (come abbiamo già visto).

Se XML-RPC è abilitato sul vostro sito, un hacker potrebbe potenzialmente montare un attacco DDoS sul vostro sito sfruttando lo script xmlrpc.php per inviare un gran numero di pingback al vostro sito in breve tempo. Questo potrebbe sovraccaricare il vostro server e mettere il sito fuori uso.

Attacchi Brute Force via XML-RPC

Ogni volta che xmlrpc.php fa una richiesta, invia il nome utente e la password per l’autenticazione. Questo presenta una significativa vulnerabilità nella sicurezza ed è qualcosa che l’API REST non fa. Infatti, la REST API utilizza OAuth, che invia token per l’autenticazione al posto di nome utente o password.

Dato che xmlrpc.php invia informazioni di autenticazione ad ogni richiesta, gli hacker potrebbero utilizzarle per provare ad accedere al vostro sito. Un attacco di forza bruta come questo potrebbe permettere loro di inserire contenuti, cancellare codice o danneggiare il vostro database.

Se un aggressore invia un numero sufficiente di richieste al vostro sito, ognuna con una diversa coppia di username e password, c’è la possibilità che alla fine possa indivinare quella giusta, ottenendo l’accesso al sito.

Ecco perché, se si ha in esecuzione una versione aggiornata di WordPress, che utilizza l’API REST per comunicare con sistemi esterni, si dovrebbe disabilitare xmlrpc.php. Ripetiamo, non è necessario e potrebbe rendere il vostro sito vulnerabile.

Info

Anche se OAuth non è supportata nativamente da Kinsta, i piani Enterprise e superiori ne possono richiedere l’implementazione.

xmlrpc.php È Attivo Sul Vostro Sito WordPress?

La prima cosa da fare è capire se xmlrpc.php è in esecuzione sul vostro sito WordPress.

Non si tratta di un semplice caso di controllo della presenza del file: fa parte di ogni installazione di WordPress e sarà presente anche se la funzionalità di XML-RPC è disabilitata.

Fate sempre un backup del vostro sito prima di cancellare qualsiasi cosa. In questo caso, non cancellate il file xmlrpc.php perché questo romperà il vostro sito.

Per verificare se xmlrpc.php è abilitato sul vostro sito, utilizzate il servizio di validazione XML-RPC di WordPress. Questo controllerà il sito e vi dirà se xmlrpc.php è abilitato.

WordPress XML-RPC Validation Service

WordPress XML-RPC Validation Service

Ecco il risultato ho ottenuto controllando questo sito sul servizio.

Controllo XML-RPC di Kinsta

Controllo XML-RPC di Kinsta

Questo mostra che xmlrpc.php è stato disabilitato su kinsta.com. Quindi, se effettuate il controllo e scoprite che xmlrpc.php è ancora abilitato sul vostro sito, come si fa a disattivarlo?

Come Disattivare xmlrpc.php

Ci sono tre modi per disabilitare xmlrpc.php:

Diamo un’occhiata singolarmente a ciascuno di essi.

Come Disabilitare xmlrpc.php con un Plugin

Installare un plugin è il modo più semplice per disabilitare xmlrpc.php. Il plugin Disable XML-RPC lo disabiliterà completamente. Ecco come si usa.

Il mio punto di partenza è il mio sito web, sul quale è abilitato xmlrpc.php. Lo potete vedere attraverso il seguente controllo:

Il sito web di Rachel McCollin - controllo XML-RPC

Il sito web di Rachel McCollin – controllo XML-RPC

Installate il plugin dalla schermata Plugin del pannello di amministrazione di WordPress e attivatelo.

Non c’è bisogno di fare altro: l’attivazione del plugin disabiliterà XML-RPC. Ora, se faccio un controllo sul mio sito, ottengo un risultato diverso:

Il sito web di Rachel McCollin - secondo controllo XML-RPC

Il sito web di Rachel McCollin – secondo controllo XML-RPC

È così semplice!

Disabilitare i Pingback XML-RPC con un Plugin

Ma cosa succede se si vuole disabilitare alcuni aspetti di xmlrpc.php e non altri? Le pluginl Disable XML-RPC Pingback vi permette di disattivare solo la funzionalità di pingback, il che significa che si ha ancora accesso alle altre funzionalità di XML-RPC, se ne avete bisogno.

Il plugin funziona nello stesso modo del plugin Disable XML-RPC: basta installarlo e attivarlo.

Configurare l’Attivazione di XML-RPC e REST API con un Plugin

Se desiderate un controllo più accurato della configurazione di xmlrpc.php e delle API REST, potete installare il plugin REST XML-RPC Data Checker.

Una volta installato e attivato questo plugin, andate in Impostazioni > REST XML-RPC Data Checker e fate clic sulla scheda XML-RPC.

REST XML-RPC Data Checker

REST XML-RPC Data Checker

Questo vi permette di configurare esattamente gli aspetti di xmlrpc.php attivi sul vostro sito.

Hai bisogno di un hosting veloce, sicuro e a misura di sviluppatore? Kinsta è stata progettata con gli sviluppatori di WordPress in mente e fornisce un sacco di strumenti e un cruscotto potente. Scopri i nostri piani

In alternativa, potete semplicemente disattivarlo del tutto. E, se volete anche il controllo sulle API REST, il plugin fornisce un’altra scheda anche per questo.

Come Disattivare xmlrpc.php Senza un Plugin

Se preferite non installare un altro plugin sul vostro sito, potete disabilitare xmlrpc.php aggiungendo del codice in un filtro, o nel vostro file .htaccess. Vediamo entrambi i metodi.

Disattivare xmlrpc.php Tramite un Filtro

Una soluzione per disabilitare xmlrpc.php è quella di utilizzare il filtro xmlrpc_enabled. Aggiungete questa funzione ad un plugin e attivatelo sul vostro sito:

add_filter( 'xmlrpc_enabled', '__return_false' );

Potreste aggiungerlo al file delle funzioni del tema, ma è meglio scrivere un plugin.

L’altra soluzione prevede la modifica del vostro file .htaccess, che è disponibile con i provider di hosting che utilizzano Apache, collegandosi al server del sito via FTP o cPanel.

Info

Kinsta utilizza il server web Nginx, il che significa che non avrete un file .htaccess in funzione. Potete invece sfruttare gli strumenti presenti nella dashboard di MyKinsta, i quali possono replicare gran parte delle principali funzionalità di .htaccess in modo più intuitivo.

Disattivare xmlrpc.php Tramite il File .htacess

Nel vostro file .htaccess, aggiungete questo codice:

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

Assicuratevi di fare una copia del vecchio file prima di farlo, nel caso vi imbattiate in qualche problema.

Chiedete al Vostro Provider di Hosting di Disattivare xmlrpc.php

Alcuni provider di hosting disabilitano xmlrpc.php se viene rilevato un attacco.

Da Kinsta, quando viene rilevato un attacco via XML-RPC, viene automaticamente aggiunto al file Nginx.config un frammento di codice:

location ~* ^/xmlrpc.php$ {
return 403;
}

Questo produrrà un errore 403 e fermerà l’attacco nel suo corso.

Se lo fate da soli, è meglio seguire uno dei metodi sopra indicati. Ma prima di procedere, verificate sempre con il vostro provider di servizi di hosting.

Quando È Necessario Abilitare xmlrpc.php?

Ci potrebbero essere alcune situazioni in cui sia necessario abilitare xmlrpc.php sul vostro sito WordPress oppure non dovreste disabilitarlo completamente.

Queste si verificano quando:

Questo è tutto! Nessuno di questi è un motivo particolarmente valido per mantenere attiva la specifica XML-RPC.

L’unico motivo per cui è ancora in WordPress è per la retro-compatibilità e personalmente lo dovreste utilizzare solo se lavorate con sistemi obsoleti. Per chiunque voglia mantenere i propri siti aggiornati e lavorare con le ultime tecnologie, la strada da percorrere è disabilitare xmlrpc.php.

XML-RPC era una volta una parte essenziale di WordPress. Ora rappresenta un rischio per la sicurezza 🔒 - Questa guida vi mostrerà esattamente come disabilitarlo sul vostro sito 🚨Click to Tweet

Riepilogo

La specifica XML-RPC è stata sviluppata prima ancora della creazione di WordPress, come mezzo di comunicazione tra WordPress e sistemi e applicazioni esterne. Ha delle falle nella sicurezza e potrebbe rendere il vostro sito vulnerabile agli attacchi.

Ora che l’API REST permette al vostro sito di comunicare con altre applicazioni, potete disabilitare in modo sicuro xmlrpc.php. Se seguite i passaggi sopra descritti per disabilitarlo, migliorerete la sicurezza dei vostri siti.


Se ti è piaciuto questo articolo, allora apprezzerai la piattaforma di hosting WordPress di Kinsta. Metti il turbo al tuo sito web e ricevi supporto 24×7 dal nostro team di veterani di WordPress. La nostra infrastruttura potenziata da Google Cloud è centrata su scaling automatico, performance e sicurezza. Permettici di mostrarti la differenza di Kinsta! Scopri i nostri piani