Vai al contenuto
🔒 Come disabilitare l'API REST in WordPress: 4 modi 2026

🔒 Come disabilitare l'API REST in WordPress: 4 modi 2026

Cos'è l'API REST e perché disabilitarla

L'API REST in WordPress è un'interfaccia integrata attraverso la quale applicazioni esterne leggono e modificano i dati del sito. Le richieste vanno a /wp-json/, la risposta torna come JSON. È comparsa in WordPress 4.7 ed è attiva di default su ogni sito da allora.

Questo è comodo per gli sviluppatori: app mobile, architettura headless, integrazioni con servizi di terze parti. Ma se non usi nulla di tutto ciò, un'API REST aperta resta una falla. Zero benefici, rischi reali.

Minacce specifiche:

  • Enumerazione utenti. Tramite /wp-json/wp/v2/users chiunque può ottenere una lista di nomi utente. Passo successivo, attacchi brute-force alle password.
  • Scraping dei contenuti. Gli articoli via /wp-json/wp/v2/posts vengono prelevati automaticamente e ripubblicati su altri siti.
  • Carico inutile. Ogni richiesta REST attraversa l'intero ciclo di WordPress. Mille bot al minuto e il sito va giù.

Ecco quattro modi per blindare l'API REST: da un plugin one-click a un blocco a livello server. Scegli quello che si adatta alla tua situazione.

💡 Panoramica rapida:

  • Installa il plugin Disable WP REST API: oltre 30.000 installazioni attive, nessuna impostazione, funziona subito dopo l'attivazione.
  • Configura la restrizione in Solid Security: se un plugin di sicurezza è già presente sul sito, l'interruttore per l'API REST si trova nella sezione Avanzate.
  • Aggiungi codice a functions.php: per chi non vuole un plugin separato per un singolo filtro, uno snippet che usa rest_authentication_errors.
  • Aggiungi una regola a.htaccess: un blocco a livello server Apache, un metodo drastico senza eccezioni.

Metodo 1: plugin Disable WP REST API, un clic

Il metodo più semplice e sicuro. Il plugin Disable WP REST API su WordPress.org fa esattamente una cosa: chiude l'API REST a chiunque non abbia effettuato l'accesso all'area di amministrazione. Gli utenti autenticati lavorano come al solito, l'editor a blocchi, gli altri plugin, tutto funziona.

Installazione: Plugin → Aggiungi nuovo, cerca "Disable WP REST API", installa e attiva. Il plugin pesa 4 KB e inizia a funzionare immediatamente. Non ci sono impostazioni.

Verifica: esci dall'area di amministrazione e apri https://вашсайт.ru/wp-json/ nel tuo browser. Vedrai il messaggio: {"code":"rest_login_required","message":"REST API restricted to authenticated users.","data":{"status":401}}. Significa che l'API REST è chiusa alle richieste esterne.

L'autore del plugin, Jeff Starr, ha 15 anni di esperienza in WordPress ed è autore di diversi libri sull'argomento. Il codice è aperto, il plugin è aggiornato regolarmente: a luglio 2026, versione 2.6.8, testato fino a WordPress 7.0.2.

Pro:

  • L'installazione richiede un minuto, nessuna impostazione
  • 4 KB di codice, non influisce sulla velocità del sito
  • Non tocca l'area di amministrazione né l'editor a blocchi
  • Oltre 30.000 installazioni attive, valutazione 4.8 su WordPress.org

Contro:

  • Blocca solo gli utenti non autenticati, un utente loggato vede l'intera API REST
  • Nessuna impostazione granulare nella versione gratuita (la versione Pro, REST Pro Tools, aggiunge filtri per ruolo e IP)

Prezzo: Gratuito. Versione Pro, REST Pro Tools, sul sito dello sviluppatore.

Download: 🔗 Disable WP REST API su WordPress.org

Metodo 2: restrizione tramite Solid Security

Se hai già Solid Security (ex iThemes Security) installato, non ti serve un plugin separato per l'API REST. Le impostazioni di sicurezza includono un interruttore già pronto.

Percorso: Security → Impostazioni → Avanzate → WordPress REST API. Nel menu a tendina, seleziona "Accesso limitato", l'API REST sarà disponibile solo per gli utenti autenticati.

Controlla anche l'impostazione XML-RPC nella stessa sezione. Se non usi l'app mobile di WordPress e non connetti Jetpack, disabilita anche quella. Due interfacce che servono raramente ma vengono attaccate spesso.

Pro:

  • Nessun plugin separato necessario, la funzione è già integrata in Solid Security
  • Interfaccia con spiegazioni, nessun bisogno di toccare codice
  • XML-RPC viene configurato allo stesso tempo

Contro:

  • Funziona solo se usi già Solid Security (installarlo solo per questo è sproporzionato)
  • La versione gratuita chiude completamente l'API REST per gli utenti non autenticati, senza eccezioni per singoli endpoint

Download: 🔗 Solid Security su WordPress.org

Metodo 3: codice in functions.php, nessun plugin

Se non vuoi installare un plugin per un singolo filtro, ecco uno snippet che fa la stessa cosa. Aggiungilo al functions.php del tuo tema child o tramite il plugin Code Snippets.

Fai un backup del sito prima di modificare. Un errore in functions.php causa la schermata bianca della morte e senza accesso amministratore dovrai risolverlo via FTP.

1/**
2 * Close REST API for unauthorized users.
3 * Authorized users work with API as usual.
4 */
5add_filter('rest_authentication_errors', function($access) {
6 if (! is_user_logged_in()) {
7 return new WP_Error(
8 'rest_forbidden',
9 __('REST API restricted to authenticated users.', 'textdomain'),
10 array('status' => 403)
11 );
12 }
13 return $access;
14});

Cosa succede qui. Il filtro rest_authentication_errors si attiva a ogni richiesta REST. is_user_logged_in() verifica se il visitatore ha effettuato l'accesso. In caso contrario, viene restituito un WP_Error con codice 403 e WordPress blocca l'avanzamento della richiesta. Se loggato, l'API funziona senza restrizioni.

Dopo aver aggiunto il codice, verifica il risultato: apri /wp-json/ in modalità incognito. Dovrebbe essere restituito un errore 403.

Importante. Il vecchio filtro rest_enabled è stato rimosso dal core di WordPress. Gli snippet con add_filter('rest_enabled', '_return_false'), che compaiono in vecchi tutorial, non funzionano a partire da WordPress 5.0. Usa solo rest_authentication_errors.

Metodo 4: blocco via.htaccess, a livello server

Un metodo radicale. Una regola in .htaccess blocca le richieste a /wp-json/ prima ancora che WordPress si avvii. Il server Apache restituisce un 403 senza mai raggiungere PHP.

Adatto quando:

  • L'API REST non serve assolutamente in nessuna forma, né a te né ai plugin;
  • il server gira su Apache (per Nginx la regola si scrive tramite un blocco location);
  • hai dimestichezza con la modifica della configurazione del server.

Aggiungi al file .htaccess nella root del sito:

1<IfModule mod_rewrite.c>
2RewriteEngine On
3RewriteCond %{REQUEST_URI} ^/wp-json/ [NC]
4RewriteRule .* - [F]
5</IfModule>

La regola si attiva su qualsiasi URL che inizia con /wp-json/. Il flag [F] significa 403 Forbidden, il flag [NC] rende il confronto case-insensitive.

Assicurati di fare una copia di .htaccess prima di modificare. Un errore di sintassi butta giù l'intero sito con un errore 500.

Il principale svantaggio di questo approccio: tutte le richieste REST sono bloccate senza eccezioni. Se un modulo di contatto smette di funzionare dopo la modifica (Contact Form 7 usa l'API REST), torna al metodo 1 o 3.

Guarda una panoramica di 6 minuti sui rischi dell'API REST di David McAllen: mostra richieste reali a /wp-json/ e dimostra entrambi i plugin in azione.

⁉️🤔 FAQ

Devo disabilitare l'API REST su ogni sito?

No. Se usi l'app mobile di WordPress, l'editor a blocchi (Gutenberg) o plugin come Contact Form 7 e WooCommerce, hanno bisogno dell'API REST. In quel caso, è meglio non disabilitarla completamente ma configurare una restrizione basata sui ruoli.

Dovresti disabilitare l'API REST sui siti dove non è usata intenzionalmente: blog con editor classico, landing page, siti brochure. Su questi progetti, un /wp-json/ aperto non offre altro che rischi. Due minuti per installare il plugin Disable WP REST API e il vettore d'attacco è chiuso.

Come verifico che l'API REST sia effettivamente disabilitata?

Apri https://вашсайт.ru/wp-json/ nel tuo browser in modalità incognito (devi essere sloggato). Se vedi un errore 401 o 403, l'API REST è chiusa. Se vengono visualizzati dati JSON, la protezione non funziona, controlla le impostazioni.

Funziona anche da riga di comando: curl -I https://вашсайт.ru/wp-json/wp/v2/users. Un codice di risposta 200 significa che la lista utenti è servita pubblicamente, un campanello d'allarme, la protezione va messa a punto.

Disabilitare l'API REST romperà l'editor a blocchi?

No, se usi i metodi 1-3. Il plugin Disable WP REST API, Solid Security e lo snippet rest_authentication_errors lasciano passare tutti gli utenti autenticati. L'editor a blocchi funziona, dato che sei loggato nell'area di amministrazione.

Il metodo 4 (.htaccess) è l'eccezione. Il blocco a livello server taglia fuori tutti indiscriminatamente e l'editor a blocchi smetterà di funzionare. Se l'area di amministrazione si rompe dopo aver modificato .htaccess, torna al metodo 1 o 3.

Cosa è più sicuro: un plugin o il codice in functions.php?

Dal punto di vista della protezione, entrambe le opzioni sono equivalenti, usano lo stesso meccanismo di WordPress. La differenza sta nella comodità e nella manutenzione.

Il plugin Disable WP REST API si aggiorna automaticamente, non dipende dal tema e non scomparirà quando cambi template. Il codice in functions.php è per chi è fondamentalmente contrario a installare plugin per una singola funzione. Scegli in base al tuo approccio all'amministrazione, non influisce sulla sicurezza.

Posso chiudere solo l'endpoint /users e lasciare il resto aperto?

Puoi, ma è un compito di messa a punto fine. Gli strumenti gratuiti in questo articolo bloccano l'API REST interamente per gli utenti non autenticati.

Se hai bisogno di tenere alcuni endpoint aperti e chiuderne altri, usa REST Pro Tools (la versione Pro del plugin Disable WP REST API) o il filtro rest_endpoints in functions.php. Dovrai elencare esplicitamente le route consentite, un compito di mezz'ora se conosci la struttura dell'API REST di WordPress.

Hai blindato l'API REST, e ora?

L'API REST è solo un vettore d'attacco. Chiudendola, hai rimosso il punto d'ingresso più facile per i bot, ma questo non sostituisce una protezione completa.

In breve: il metodo 1 (il plugin Disable WP REST API) risolve il problema in due minuti. Installalo, controlla /wp-json/ in incognito, assicurati che il modulo di contatto funzioni, fatto. I rischi sono ridotti.

Il livello successivo è un firewall e la protezione brute-force. Inizia con Solid Security gratuito: chiuderà l'API REST, XML-RPC e gli attacchi brute-force alle password in un'unica interfaccia. Quale plugin di sicurezza usi, faccelo sapere nei commenti.