Nonce sta per “numero utilizzato una sola volta”.
Si tratta di una stringa alfanumerica pseudo-casuale generata utilizzando una delle funzioni di generazione nonce di WordPress e incorporata in una pagina o in un link da cui verrà generata una richiesta.
Può essere visualizzata nel codice HTML sorgente della pagina.

Il collegamento a LogOut aggiunge un nonce specifico dell’azione nel parametro _wpnonce per garantire che le richieste di disconnessione siano valide e non vengano falsificate.
Includere un nonce in una richiesta e verificarlo nella funzione ricevente garantisce che la richiesta sia intenzionale.
Se implementati e convalidati correttamente, i nonce possono prevenire la richieste fraudolente (Cross-Site Request Forgery).
Tuttavia, gli sviluppatori spesso abusano di questa funzionalità (o non la utilizzano affatto).
I nonce in WordPress non sono in realtà un “numero utilizzato una sola volta” e durano invece fino a 24 ore, il che significa che possono essere riutilizzati entro tale periodo di tempo.
Nell’esempio precedente, un nonce viene passato in una richiesta di disconnessione e questo nonce viene verificato prima dell’esecuzione dell’azione logout.
Questo garantisce che un aggressore che inserisce un link a http://localhost:8081/wp-login.php?action=logout in una propria pagina controllata e accessibile da Internet, e induce un utente WordPress a cliccare sul collegamento (ad esempio tramite un’e-mail di phishing), non possa attivare l’azione logout per conto dell’utente preso di mira.
È importante comprendere l’ uso corretto dei nonce in WordPress, perché spesso vengono implementati in modo errato.
Ad esempio, gli sviluppatori di plugin, spesso utilizzano i nonce come meccanismo di autorizzazione nelle funzioni, invece della funzione current_user_can() descritta nella sezione precedente.
Funzioni e parametri nonce
WordPress offre agli sviluppatori diverse funzioni di generazione e verifica dei nonce.
Per prevenire la falsificazione delle richieste tra siti (Cross-Site Request Forgery), i nonce devono essere generati e inseriti nelle richieste che eseguono azioni sull’istanza di WordPress (ad esempio, la modifica delle impostazioni o l’eliminazione di post) e devono essere verificati all’interno della funzione che esegue l’azione prima che questa venga eseguita.
I ricercatori di vulnerabilità possono cercare queste funzioni all’interno di plugin e temi per verificare se vengono utilizzate insieme a un meccanismo di autorizzazione.
In caso contrario, il ricercatore può cercare nel codice per verificare se la funzione di generazione del nonce viene utilizzata all’interno di una pagina accessibile a un utente di livello inferiore.
Ad esempio, un’azione AJAX potrebbe essere agganciata a una funzione che modifica le impostazioni del plugin e controlla e verifica un nonce, ma non esegue un controllo di autorizzazione.
Questo nonce potrebbe essere generato e stampato sulla pagina del profilo di un utente subscriber.
Ciò significa che un utente abbonato potrebbe modificare le impostazioni del plugin passando un nonce valido a cui ha accesso.
Funzioni di generazione di nonce
wp_create_nonce(): Questa funzione genera un token nonce e lo restituisce come stringa. Accetta un parametro facoltativo, $action, che è una stringa che identifica l’azione eseguita.
wp_nonce_field(): Questa funzione genera un campo di input nascosto con un token nonce e lo restituisce come stringa. Accetta due parametri: $action e $name, $action è una stringa che identifica l’azione eseguita, mentre $name è il nome del campo di input.
wp_nonce_url(): Questa funzione genera un URL con un nonce aggiunto come parametro della stringa di query.Accetta due parametri: $actionurl e $action, $actionurl è l’URL a cui verrà indirizzato l’utente, mentre $action è una stringa che identifica l’azione eseguita.
Funzioni di verifica del nonce
wp_verify_nonce(): Questa funzione controlla il referrer per un valore nonce. Accetta due parametri: $nonce e $action. $nonce è il valore nonce, mentre $action è una stringa che identifica l’azione eseguita.
check_admin_referer(): Questa funzione confronta il referrer per una schermata di amministrazione di WordPress con il valore nonce. Accetta due parametri: $action e $query_arg. $action è una stringa che identifica l’azione eseguita, mentre $query_arg è il nome del parametro URL che contiene il valore nonce.
check_ajax_referer(): Questa funzione verifica il referrer per una richiesta AJAX rispetto al valore nonce. Accetta due parametri: $action e $query_arg. $action è una stringa che identifica l’azione eseguita, mentre $query_arg è il nome del parametro URL che contiene il valore nonce.


Lascia un commento
Devi essere connesso per inviare un commento.