Guida ai Nonce in WordPress
Pubblicato: 2023-02-12La sicurezza è un argomento vitale per tutti i proprietari di siti web. Sebbene esistano molte strategie per proteggere il tuo sito Web, l'utilizzo di nonce in WordPress non dovrebbe essere trascurato. Questa è una delle funzionalità di sicurezza più utilizzate e previene una serie di potenziali problemi.
Un nonce è un "numero utilizzato una volta" e protegge i moduli e gli URL da individui malintenzionati e altri usi impropri. Questi numeri funzionano come valori identificativi che i browser degli utenti dovranno mostrare per ottenere il permesso di eseguire azioni sensibili.
In questo articolo vedremo come funzionano i nonce in WordPress e come crearli. Discuteremo quindi su come verificare un nonce. Iniziamo!
Come funzionano i Nonce su WordPress?
Lo scopo principale di un nonce è proteggere il tuo sito Web WordPress da attacchi dannosi, come i Cross-Site Request Forgeries (CSRF). Questo tipo di attacco induce gli utenti a inviare un modulo o a fare clic su un collegamento dannoso per il tuo sito web. Per proteggere il tuo sito, WordPress controlla il valore nonce e consente il completamento dell'azione solo se tale valore è corretto.
I nonce fanno già parte delle funzionalità di WordPress e non è necessario aggiungerli agli elementi generati da WordPress. Ciò significa che le azioni chiave come l'aggiunta e la modifica di post sono automaticamente protette.
Quando viene utilizzato un nonce, ha una durata predefinita di 24 ore. Trascorso tale periodo, il nonce non può più essere utilizzato per verificare l'azione per cui è stato definito. Tuttavia, questa durata può essere regolata dagli amministratori del sito web.
Uno degli attacchi CSRF più comuni da cui nonces protegge è la cancellazione dannosa degli account utente. Dopo aver implementato un nonce, la schermata dell'amministratore genererà un URL per l'eliminazione dell'account. WordPress aggiungerà un nonce alla fine di quell'URL, che sarà simile a questo:
http://tuodominio.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315
Se un utente malintenzionato cerca di sostituire l'ID utente con un altro valore, ad esempio "user=8", il nonce non sarà valido. L'eliminazione dell'account non riuscirà e verrà visualizzata una pagina di errore 403 Forbidden. Ciò rende molto più difficile per gli utenti malintenzionati attaccare i contenuti del tuo sito.
Sapere che i nonce possono proteggere il tuo sito Web è importante, ma devi anche capire come implementarli. Sebbene siano già attive per le funzionalità predefinite di WordPress, potrebbe essere necessario implementarle manualmente per i tuoi temi e plug-in.
Creazione di un Nonce
Per creare un nonce, dovrai aggiungere una funzione al codice del tuo sito web. Tutti i codici di creazione nonce vengono inseriti nel file functions.php . Per aprire questo file, vai su Aspetto > Editor dei temi nella dashboard di WordPress. A destra, fai clic su functions.php per aprire l'editor di file.
I nonce vengono implementati separatamente per URL, moduli e azioni. Per creare un nonce di azione, aggiungi il seguente codice a questo file:

$nonce= wp_create_nonce('$action');
La sezione "$action" del codice dovrebbe essere adattata per riflettere l'azione che vuoi che il nonce verifichi. Un esempio potrebbe essere l'utilizzo dell'azione "delete-post", che imposta il nonce per verificare gli utenti che tentano di eliminare i post.
Per creare un nonce per un URL, puoi utilizzare il seguente codice:
$nonce= wp_nonce_url();
Tra parentesi, dovrai indicare gli argomenti della funzione. Questo è l'URL semplice e la stringa per le azioni dell'utente. La stringa dovrebbe essere specifica per un singolo utente, al fine di migliorare la sicurezza del nonce.
Se desideri creare un nonce per eliminare un account utente, puoi utilizzare questo snippet:
$nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);
WordPress imposterà il nome predefinito del nonce su "_wpnonce", ma puoi aggiornarlo aggiungendo il nome scelto alla fine della stringa sopra.
Per creare un nonce per un modulo, includi questo codice:
$nonce= wp_nonce_field();
Tra parentesi, dovrai aggiungere una stringa per le azioni dell'utente. Al termine, la funzione crea due campi nascosti nel modulo, con il primo che contiene il valore hash nonce. Il secondo campo è l'URL corrente. La funzione finale dovrebbe essere simile a questa:
$nonce= wp_nonce_field('remove-comment_'.$comment_id);
Questa funzione nonce avrà anche il nome nonce predefinito di WordPress. Tuttavia, questo è anche qualcosa che puoi modificare se preferisci.
Verifica di un Nonce
Dopo aver aggiunto un nonce al tuo sito Web WordPress, è importante verificarlo. Ciò garantisce che il nonce funzioni correttamente e protegga il tuo sito web.
Vengono utilizzati diversi metodi per verificare il nonce per URL e moduli. Per verificare un URL nonce, aggiungi il seguente codice al file functions.php :
wp_verify_nonce($nonce, $action);
In questa funzione, adatta "$nonce" al nome del nonce che desideri verificare, ad esempio "delete-user". Quindi, modifica la stringa "$action" nell'ora specifica in cui viene creato il nonce. Quando la funzione viene eseguita, restituirà "false" se il nonce non è valido.
Se il nonce è valido, invece, la funzione restituirà 1 o 2. Questo indica l'età del nonce. Un valore pari a 1 indica che il nonce è stato creato nelle ultime 12 ore. Un valore uguale a 2 significa che il nonce è stato creato più di 12 ore, ma meno di 24 ore fa.
Se hai aggiunto un nonce a un modulo, è necessario il seguente codice per verificarlo:
check_admin_referer($action, $nonce);
Se il valore nonce è valido, il modulo funzionerà come previsto. Tuttavia, se il nonce non è valido, il browser dell'utente lo reindirizzerà a una pagina di errore 403 Forbidden.
Crea esperienze digitali sicure su WP Engine
La sicurezza è vitale per un sito Web stabile e i nonce aggiungono un ulteriore livello di protezione. Per implementarli, tutto ciò che devi fare è aggiungere del codice al tuo file functions.php . Il codice utilizzato varia a seconda del tipo di nonce che si desidera creare e dell'azione che si desidera proteggere.
Mentre la creazione e l'implementazione di nonce migliora la sicurezza del sito, ci sono anche altri protocolli di sicurezza da considerare. Fortunatamente, la piattaforma di hosting WordPress sicura di WP Engine offre alcune delle migliori risorse di sicurezza per utenti e sviluppatori. Questo ti lascia più tempo per concentrarti sul perfezionamento del tuo sito WordPress!