XML-RPC: perché disabilitarlo e come blindare il login WordPress

XML-RPC è una delle porte d'ingresso più abusate dagli attaccanti per il brute-force delle password. Analisi del rischio e soluzione completa per .htaccess e functions.php.
XML-RPC è un protocollo introdotto in WordPress per permettere a client remoti — app mobili, strumenti di pubblicazione, integrazioni legacy — di comunicare con il sito via HTTP. Per anni è stata una feature comoda; oggi è quasi sempre una superficie d'attacco. Un solo endpoint xmlrpc.php espone decine di metodi, tra cui system.multicall, che permette di tentare centinaia di login in un'unica richiesta HTTP.
Il rischio è concreto: gli attaccanti usano liste di password noti e automatizzano i tentativi via XML-RPC perché il blocco classico per IP non funziona — multicall inserisce tutti i tentativi nello stesso payload. Se il tuo sito ha utenti con password deboli, prima o poi cede.
Disabilitare XML-RPC da .htaccess (soluzione più pulita)
La soluzione più robusta è bloccare del tutto l'accesso al file xmlrpc.php a livello di web server, prima ancora che WordPress lo processi. Su Apache aggiungi al file .htaccess:
# Blocca ogni accesso a xmlrpc.php
<Files xmlrpc.php>
Require all denied
</Files>Se non puoi bloccare il file (perché un'integrazione lo richiede) o preferisci una soluzione a livello di applicazione, disabilita i metodi non essenziali nel file functions.php del tema child:
// Disabilita i metodi pericolosi di XML-RPC
add_filter( 'xmlrpc_methods', function( $methods ) {
unset( $methods['system.multicall'] );
unset( $methods['wp.getUsersBlogs'] );
return $methods;
} );
// Disabilita completamente XML-RPC (se non ti serve affatto)
add_filter( 'xmlrpc_enabled', '__return_false' );Aggiungi poi una protezione al login che limita i tentativi per IP, per renderlo resistente ai brute-force anche via wp-login.php:
# Limita i tentativi di login a 5 ogni 10 minuti per IP
<IfModule mod_ratelimit.c>
SetOutputFilter RATE_LIMIT
SetEnvIf Request_URI wp-login.php rate_limit=5
</IfModule>In un piano di sicurezza WP Planet, XML-RPC viene disabilitato di default salvo casi specifici, e il login viene protetto con WAF + limit retry. La differenza tra un sito protetto e uno esposto, spesso, è solo una riga di .htaccess.
Verifica la sicurezza del tuo WordPress prima che diventi un'emergenza.
Un audit di sicurezza individua le falle, i plugin vulnerabili e le configurazioni deboli prima che qualcuno le sfrutti.
Articoli correlati

Brute force su wp-login: come fermare gli attacchi senza bloccare gli utenti legittimi
Leggi
Hardening WordPress: 12 controlli per blindare un sito prima che venga attaccato
Leggi
