Salta al contenuto principale
Sistemi Attivi
WP Planet — WordPress Cloud & Managed Services
Torna al MagazineSicurezza

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

22 Ott 2025 5 min di lettura
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:

.htaccess
# Blocca ogni accesso a xmlrpc.php
<Files xmlrpc.php>
    Require all denied
</Files>
Nota: Prima di applicare, verifica che nessuna app mobile o integrazione di terze parti (es. Jetpack, app di pubblicazione) si appoggi a XML-RPC. Se ne usi una, applica solo il filtro PHP.

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:

wp-config.php
// 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' );
Nota: Il blocco del solo system.multicall rimuove il vettore più pericoloso mantenendo XML-RPC parzialmente attivo per integrazioni che lo richiedano.

Aggiungi poi una protezione al login che limita i tentativi per IP, per renderlo resistente ai brute-force anche via wp-login.php:

.htaccess
# 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>
Nota: mod_ratelimit è disponibile su molti hosting Apache. Se il tuo non lo supporta, un plugin come Limit Login Attempts Reloaded è una alternativa valida.

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.

Audit di sicurezza

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.

Audit di sicurezza
Condividi