wp-note

Sviluppo Siti Web

Come proteggere l’elenco degli utenti in WordPress disabilitando l’endpoint

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

  1. 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.
  2. 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:

  1. 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.
  2. 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).


Pubblicato

in

,

da

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *