REST API di WordPress: perché bloccare solo le richieste non autenticate invece di spegnerla del tutto

La REST API di WordPress mostra i nomi utente del tuo sito tramite l'indirizzo wp-json anche ai visitatori non connessi. Disattivarla del tutto può far fallire il salvataggio nell'editor a blocchi, quindi ho raccolto come bloccare solo le richieste non autenticate e verificarlo con la risposta 401.
1️⃣ Che cos'è la REST API di WordPress: l'indirizzo wp-json e cosa fa
La REST API di WordPress è una funzione integrata di WordPress che scambia dati del sito come articoli, pagine e utenti in formato JSON, e risponde sotto /wp-json/ dopo l'indirizzo del sito.
Sotto /wp-json/ gli indirizzi sono divisi per tipo di dato, come [wp/v2/posts], [wp/v2/pages] e [wp/v2/users], e ciascuno di essi si chiama endpoint. Anche l'editor a blocchi invia richieste a questi indirizzi quando salva un articolo.
https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users2️⃣ Nomi utente esposti tramite wp-json
L'endpoint [wp/v2/users] restituisce il nome visualizzato e lo slug di ogni utente che ha pubblicato articoli, e di default lo slug contiene esattamente il nome utente di accesso. Anche nell'account amministratore del sito di test, https://testpilotweb.com/, slug e nome utente di accesso coincidevano.
Una volta esposto il nome utente di accesso, a un attaccante basta scoprire la password per entrare, e la schermata di login di WordPress del sito di test ha registrato 2.570 tentativi brute force solo il 7 ottobre 2026.
Anche bloccando questo indirizzo, lo stesso nome utente resta nell'indirizzo della pagina dell'autore (/author/nomeutente/).
3️⃣ Cosa si rompe se la spegni del tutto
Se disattivi del tutto la WP REST API, la prima cosa a fallire è il salvataggio degli articoli nell'editor a blocchi; per questo anche Perfmatters, uno dei plugin di ottimizzazione per WordPress, divide la disattivazione in due livelli: [Disable for Non-Admins] e [Disable When Logged Out]. Nei siti con account di autori o collaboratori, [Disable for Non-Admins] blocca anche il salvataggio degli articoli di quegli account.
Anche su un sito che bloccava solo le richieste non autenticate, collegando un connettore MCP in claude.ai sono comparsi 0 strumenti dopo l'autenticazione. Nel log del server tutte le richieste MCP risultavano 401, e la causa era che Perfmatters bloccava la richiesta prima che MCP controllasse il token.
| Valore di [Disable REST API] | Indirizzo users per i visitatori non connessi | Salvataggio da account non amministratori | Adatto a |
|---|---|---|---|
| Default (Enabled) | Nomi utente esposti | Salva normalmente | — |
| Disable for Non-Admins | 401 | Salvataggio non riuscito | Siti senza account di autori o collaboratori |
| Disable When Logged Out | 401 | Salva normalmente | Siti con account di autori; per connessioni con token come MCP aggiungi un percorso di eccezione |
4️⃣ Bloccare solo le richieste non autenticate (Perfmatters)
Nell'area di amministrazione di WordPress vai in [Settings] → [Perfmatters] → [General], imposta [Disable REST API] della sezione [Core] su [Disable When Logged Out] e fai clic su [Save Changes].


Lingue supportate da Perfmatters: inglese (predefinita), coreano, tedesco, francese, italiano, olandese, portoghese (Brasile), russo, ucraino, turco, bulgaro, ungherese, indonesiano, persiano, cinese (semplificato)

Se apri /wp-json/wp/v2/users in una finestra in incognito senza accesso, torna una risposta 401 con il messaggio [Sorry, you do not have permission to make REST API requests.], mentre l'editor a blocchi continua a salvare normalmente quando hai effettuato l'accesso.
[
{
"id": 1,
"name": "User A",
"slug": "user_a",
"link": "https://example.com/author/user_a/"
}
]
{
"code": "rest_authentication_error",
"message": "Sorry, you do not have permission to make REST API requests.",
"data": { "status": 401 }
}
5️⃣ Eccezioni nei percorsi bloccati
Se con il blocco attivo devi aprire solo un percorso specifico, aggiungi quel percorso al filtro [perfmatters_rest_api_exceptions] di Perfmatters. Il problema degli 0 strumenti nel connettore MCP di claude.ai è stato risolto creando uno snippet PHP nel menu [Code] di Perfmatters e lasciando come eccezione solo il percorso MCP.
add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
$exceptions[] = '/mcp/mcp-oauth-server';
return $exceptions;
});Anche dopo l'eccezione, è MCP stesso a bloccare le richieste senza token con il messaggio [MCP authentication required.] e una risposta 401, mentre /wp-json/wp/v2/users continua a restituire la risposta 401 di Perfmatters.
[MCP authentication required.]
[Remove REST API Links], nella stessa sezione [Core], rimuove solo il link api.w.org dall'intestazione della pagina e dalle intestazioni di risposta; la WP REST API continua comunque a rispondere.
🔢 FAQ & contenuti consigliati
MCP
WP Rocket MCP Server
Come collegare strumenti di IA che svuotano la cache e cambiano le impostazioni al posto dell'area di amministrazione.
Sicurezza
Wordfence vs iThemes Security
Un confronto tra due plugin di sicurezza che fermano attacchi brute force e malware.
ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.