{"id":25847,"date":"2026-07-27T10:00:00","date_gmt":"2026-07-27T08:00:00","guid":{"rendered":"https:\/\/soccorsowp.it\/blog\/?p=25847"},"modified":"2026-07-27T10:00:00","modified_gmt":"2026-07-27T08:00:00","slug":"disabilitare-xmlrpc-wordpress-sicurezza","status":"publish","type":"post","link":"https:\/\/soccorsowp.it\/blog\/disabilitare-xmlrpc-wordpress-sicurezza\/","title":{"rendered":"Come disabilitare XML-RPC in WordPress e perch\u00e9 dovresti farlo"},"content":{"rendered":"<h1>Come disabilitare XML-RPC in WordPress e perch\u00e9 dovresti farlo<\/h1>\n<p><strong>XML-RPC<\/strong> \u00e8 un protocollo che permette ad applicazioni esterne di comunicare con <a href=\"https:\/\/soccorsowp.it\/blog\/blocco-di-contenuti-opt-in-per-wordpress\/\">WordPress<\/a>. \u00c8 il sistema che consente di pubblicare articoli da app mobile, ricevere pingback e usare strumenti di gestione remota. Tuttavia, \u00e8 anche uno dei vettori di attacco pi\u00f9 sfruttati dai bot. In questa guida ti spiego cos&#8217;\u00e8, perch\u00e9 \u00e8 un rischio e come disabilitarlo.<\/p>\n<h2>Cos&#8217;\u00e8 XML-RPC e a cosa serve<\/h2>\n<p>Il file <span style=\"font-family: monospace\">xmlrpc.php<\/span> si trova nella root della tua installazione WordPress ed espone un&#8217;interfaccia che accetta richieste remote. Storicamente serviva per:<\/p>\n<ul>\n<li><strong>Pubblicazione remota:<\/strong> permetteva di scrivere e pubblicare articoli da applicazioni desktop come Windows Live Writer o da app mobile.<\/li>\n<li><strong>Pingback e trackback:<\/strong> gestiva le notifiche tra blog quando un sito linkava un altro.<\/li>\n<li><strong>Jetpack:<\/strong> il plugin Jetpack di <a href=\"https:\/\/soccorsowp.it\/blog\/automattic-e-beeper-unalleanza-per-rivoluzionare-la-messaggistica\/\">Automattic<\/a> usa XML-RPC per comunicare con i server WordPress.com.<\/li>\n<\/ul>\n<p>Con l&#8217;introduzione della <strong>REST API<\/strong> in WordPress 4.7, la maggior parte di queste funzionalit\u00e0 \u00e8 stata sostituita da un sistema pi\u00f9 moderno e sicuro. L&#8217;app mobile di WordPress, ad esempio, ora usa la REST API. XML-RPC rimane attivo per retrocompatibilit\u00e0, ma nella maggior parte dei casi non serve pi\u00f9.<\/p>\n<h2>Perch\u00e9 XML-RPC \u00e8 un rischio per la sicurezza<\/h2>\n<p>XML-RPC \u00e8 un bersaglio preferito dagli attaccanti per diverse ragioni:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/soccorsowp.it\/blog\/cleantalk-la-soluzione-anti-spam-essenziale-per-la-sicurezza-dei-tuoi-siti-web\/\">Attacchi brute force<\/a> amplificati:<\/strong> tramite il metodo <span style=\"font-family: monospace\">system.multicall<\/span>, un attaccante pu\u00f2 testare centinaia di combinazioni username\/password in una singola richiesta HTTP. I plugin che limitano i tentativi di login su wp-login.php non proteggono XML-RPC.<\/li>\n<li><strong>Attacchi DDoS via pingback:<\/strong> un attaccante pu\u00f2 usare il tuo server come amplificatore per attacchi DDoS inviando richieste pingback false verso un sito bersaglio.<\/li>\n<li><strong>Enumerazione utenti:<\/strong> attraverso XML-RPC \u00e8 possibile scoprire i nomi utente validi del sito.<\/li>\n<\/ul>\n<p>Controlla i log del tuo server: \u00e8 molto probabile che troverai migliaia di richieste POST verso <span style=\"font-family: monospace\">xmlrpc.php<\/span> provenienti da bot.<\/p>\n<h2>Verificare se XML-RPC \u00e8 attivo<\/h2>\n<p>Per verificare se il tuo sito ha XML-RPC attivo, apri il browser e vai a:<\/p>\n<pre>https:\/\/tuodominio.com\/xmlrpc.php<\/pre>\n<p>Se vedi il messaggio <em>&#8220;XML-RPC server accepts POST requests only&#8221;<\/em>, significa che XML-RPC \u00e8 attivo e raggiungibile. Se ricevi un errore 403 o 404, \u00e8 gi\u00e0 disabilitato.<\/p>\n<p>Puoi anche usare il servizio online <strong>xmlrpc.eritreo.it<\/strong> per testare se il tuo XML-RPC risponde a richieste.<\/p>\n<h2>Metodo 1: disabilitare XML-RPC con un filtro PHP<\/h2>\n<p>Il metodo pi\u00f9 pulito \u00e8 aggiungere un filtro nel file <span style=\"font-family: monospace\">functions.php<\/span> del tuo tema child o in un plugin personalizzato:<\/p>\n<pre>add_filter('xmlrpc_enabled', '__return_false');<\/pre>\n<p>Questa singola riga disabilita tutte le funzionalit\u00e0 XML-RPC a livello applicativo. WordPress risponder\u00e0 comunque alle richieste ma restituir\u00e0 un errore. Il vantaggio \u00e8 che PHP viene comunque eseguito, quindi il server processa la richiesta. Per bloccare le richieste prima che raggiungano PHP, usa il metodo seguente.<\/p>\n<h2>Metodo 2: bloccare l&#8217;accesso a livello server<\/h2>\n<p>Bloccare le richieste a <span style=\"font-family: monospace\">xmlrpc.php<\/span> direttamente nel server web \u00e8 pi\u00f9 efficiente perch\u00e9 la richiesta viene respinta prima di caricare WordPress e PHP.<\/p>\n<p><strong>Per Apache (.htaccess):<\/strong><\/p>\n<pre>&lt;Files xmlrpc.php&gt;\nOrder Allow,Deny\nDeny from all\n&lt;\/Files&gt;<\/pre>\n<p><strong>Per Nginx:<\/strong><\/p>\n<pre>location = \/xmlrpc.php {\n    deny all;\n    return 403;\n}<\/pre>\n<p>Questo metodo restituisce un errore 403 Forbidden senza eseguire nessun codice PHP, risparmiando risorse del server.<\/p>\n<h2>Metodo 3: usare un plugin<\/h2>\n<p>Se non ti senti a tuo agio con la modifica dei file, puoi usare il plugin <strong>Disable XML-RPC<\/strong>. Lo installi, lo attivi e XML-RPC viene disabilitato. Nessuna configurazione necessaria. In alternativa, plugin di sicurezza come <strong>Wordfence<\/strong> permettono di bloccare l&#8217;accesso a xmlrpc.php dalle impostazioni del firewall.<\/p>\n<h2>Cosa fare se usi Jetpack<\/h2>\n<p>Se usi il plugin <strong>Jetpack<\/strong>, non puoi disabilitare completamente XML-RPC perch\u00e9 Jetpack lo usa per comunicare con i server WordPress.com. In questo caso, invece di bloccarlo del tutto, puoi:<\/p>\n<ul>\n<li><strong>Disabilitare solo i pingback:<\/strong> aggiungi nel functions.php: <span style=\"font-family: monospace\">add_filter(&#8216;xmlrpc_methods&#8217;, function($methods) { unset($methods[&#8216;pingback.ping&#8217;]); return $methods; });<\/span><\/li>\n<li><strong>Limitare l&#8217;accesso per IP:<\/strong> permetti l&#8217;accesso a xmlrpc.php solo dagli IP di Automattic e blocca tutti gli altri.<\/li>\n<li><strong>Usare il firewall di Wordfence:<\/strong> Wordfence pu\u00f2 bloccare gli attacchi brute force su XML-RPC senza disabilitare le funzionalit\u00e0 legittime di Jetpack.<\/li>\n<\/ul>\n<h2>Monitorare le richieste a xmlrpc.php<\/h2>\n<p>Anche dopo aver disabilitato XML-RPC, \u00e8 utile monitorare quante richieste arrivano al file per capire l&#8217;entit\u00e0 degli attacchi. Puoi controllare i log di accesso del server:<\/p>\n<pre>grep xmlrpc.php \/var\/log\/apache2\/access.log | wc -l<\/pre>\n<p>O per Nginx:<\/p>\n<pre>grep xmlrpc.php \/var\/log\/nginx\/access.log | wc -l<\/pre>\n<p>Se il numero \u00e8 elevato (migliaia al giorno), il blocco a livello server \u00e8 particolarmente importante per risparmiare risorse.<\/p>\n<h2>Proteggere anche la REST API<\/h2>\n<p>Dopo aver disabilitato XML-RPC, ricorda che la <strong>REST API<\/strong> di WordPress \u00e8 un altro punto di ingresso che merita attenzione. Per impostazione predefinita, la REST API espone informazioni come la lista degli utenti all&#8217;endpoint <span style=\"font-family: monospace\">\/wp-json\/wp\/v2\/users<\/span>. Puoi limitare l&#8217;accesso alla REST API solo agli utenti autenticati:<\/p>\n<pre>add_filter('rest_authentication_errors', function($result) {\n    if (!is_user_logged_in()) {\n        return new WP_Error('rest_not_logged_in', 'Accesso non autorizzato.', array('status' =&gt; 401));\n    }\n    return $result;\n});<\/pre>\n<p>Fai attenzione: questo blocca anche le richieste REST API legittime da plugin come i form di contatto. Un approccio pi\u00f9 mirato \u00e8 bloccare solo l&#8217;endpoint utenti:<\/p>\n<pre>add_filter('rest_endpoints', function($endpoints) {\n    if (isset($endpoints['\/wp\/v2\/users'])) {\n        unset($endpoints['\/wp\/v2\/users']);\n    }\n    if (isset($endpoints['\/wp\/v2\/users\/(?P&lt;id&gt;[\\d]+)'])) {\n        unset($endpoints['\/wp\/v2\/users\/(?P&lt;id&gt;[\\d]+)']);\n    }\n    return $endpoints;\n});<\/pre>\n<p>Disabilitare XML-RPC e proteggere la REST API riduce significativamente la superficie di attacco del tuo sito WordPress.<\/p>\n<h2>Serve assistenza?<\/h2>\n<p>Se il tuo sito subisce attacchi attraverso XML-RPC o hai bisogno di disabilitarlo mantenendo la compatibilit\u00e0 con Jetpack, il team di <strong>SoccorsoWP<\/strong> pu\u00f2 configurare tutto per te. <a href=\"https:\/\/soccorsowp.it\/ticket\/\">Apri un ticket<\/a> e proteggi il tuo sito.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come disabilitare XML-RPC in WordPress e perch\u00e9 dovresti farlo XML-RPC \u00e8 un protocollo che permette ad applicazioni esterne di comunicare con WordPress. \u00c8 il sistema&#8230;<\/p>\n","protected":false},"author":1,"featured_media":25848,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"Come disabilitare XML-RPC in WordPress e perch\u00e9 dovresti farlo","_seopress_titles_desc":"XML-RPC \u00e8 un rischio per la sicurezza di WordPress. Scopri perch\u00e9 dovresti disabilitarlo e tre metodi per farlo: filtro PHP, .htaccess\/Nginx e plugin.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","footnotes":""},"categories":[1700],"tags":[],"class_list":["post-25847","post","type-post","status-publish","format-standard","has-post-thumbnail","category-sicurezza-wordpress"],"_links":{"self":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/comments?post=25847"}],"version-history":[{"count":0,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25847\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media\/25848"}],"wp:attachment":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media?parent=25847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/categories?post=25847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/tags?post=25847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}