Una delle funzionalità nascoste, ma potentemente esposte di WordPress, è la sua API REST, che consente agli sviluppatori di accedere a una varietà di dati dal sito. Purtroppo, se non gestita correttamente, questa funzionalità può rivelare informazioni che preferiremmo mantenere private, come l’elenco degli utenti del sito (user enumeration).
Molti proprietari di siti WordPress potrebbero non rendersi conto che l’elenco dei loro utenti potrebbe essere facilmente accessibile al pubblico attraverso questa API. E mentre in alcuni casi mostrare gli utenti potrebbe non essere una grande preoccupazione, in altri, può rappresentare un rischio significativo per la privacy e la sicurezza.
In questo articolo, ti guiderò a disabilitare l’endpoint dell’API che elenca gli utenti, garantendo che le informazioni sensibili rimangano protette.
Gli endpoint più comuni
WordPress fornisce diversi endpoint predefiniti, che sono essenzialmente URL specifici che rappresentano vari tipi di dati, come post, pagine, commenti e, come abbiamo menzionato, utenti.
Ecco alcuni esempi di endpoint comuni:
/wp-json/wp/v2/posts
: elenca tutti i post pubblici./wp-json/wp/v2/pages
: elenca tutte le pagine pubbliche./wp-json/wp/v2/comments
: elenca tutti i commenti./wp-json/wp/v2/users
: l’endpoint che stiamo considerando, che elenca tutti gli utenti.
Ciascuno di questi endpoint può essere personalizzato con vari parametri per filtrare, ordinare o limitare i dati restituiti.
Come verificare se il tuo sito è vulnerabile
Prima di intraprendere azioni per proteggere il tuo sito, è essenziale determinare se esso è effettivamente vulnerabile. Ecco come puoi verificare la vulnerabilità del tuo sito rispetto all’esposizione dell’elenco degli utenti:
Accesso all’endpoint degli utenti via browser
- Apri il tuo browser: Vai alla barra degli indirizzi e inserisci l’URL del tuo sito WordPress seguito da
/wp-json/wp/v2/users
. Ad esempio:https://iltuosito.com/wp-json/wp/v2/users
. - Osserva i risultati: Se vedi un elenco di utenti con dettagli come
id
,name
,username
, e così via, significa che l’endpoint è attivo e accessibile.
Disabilitare l’endpoint che consente user enumeration
Sebbene ci siano vari modi per fare ciò, uno dei metodi più diretti e semplici è intervenire sul file functions.php
inserendo il seguente codice:
add_filter('rest_endpoints', function($endpoints){
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return $endpoints;
});
Verifica che l’endpoint sia stato disabilitato
Apri un nuovo browser o una nuova finestra in modalità privata e prova ad accedere all’URL del tuo sito seguito da /wp-json/wp/v2/users
. Ad esempio: https://iltuosito.com/wp-json/wp/v2/users
. Dovresti ricevere un messaggio che indica che l’endpoint non è disponibile o non esiste.
Altri metodi di protezione
Plugin
Molti plugin di sicurezza per WordPress offrono funzionalità per limitare o disabilitare accessi non desiderati alle API REST:
- Wordfence: Questo popolare plugin di sicurezza include una funzionalità per limitare l’accesso alle API REST. Puoi scegliere di disabilitare l’accesso a tutti gli endpoint o solo a quelli specifici.
- iThemes Security: Un altro rinomato plugin che permette di disattivare l’API REST o di limitarne l’accesso solo agli utenti autenticati.
.htaccess
Se il tuo sito è ospitato su un server che utilizza Apache, puoi aggiungere alcune regole nel tuo file .htaccess
per bloccare l’accesso all’endpoint degli utenti:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/wp-json/wp/v2/users [NC,OR]
RewriteCond %{REQUEST_URI} ^/wp-json/wp/v2/users/ [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Questo codice impedirà l’accesso all’endpoint degli utenti restituendo un errore 403 (Forbidden).
Lascia un commento