WordPress nonce, ou « number used once« , est un mécanisme de sécurité crucial pour protéger votre site contre les attaques de type CSRF (Cross-Site Request Forgery). 🛡️ Ces petites clés cryptographiques aident à valider que les actions effectuées sur votre site proviennent de sources légitimes. Dans cet article, nous plongeons dans le monde des nonces WordPress : vous apprendrez exactement ce qu’est un nonce, pourquoi il est indispensable, et comment vous pouvez implémenter cette fonctionnalité pour sécuriser vos formulaires et processus d’authentification. 📊 Que vous soyez développeur ou simplement curieux de sécuriser davantage votre site, ce guide vous donnera les clés pour utiliser efficacement les nonces dans WordPress. 🗝️
Objectif
En lisant cet article, vous allez découvrir, ce que c’est WordPress nonce, pourquoi vous devez l’utiliser et la manière de l’implémenter sur votre site.🤔
Besoin d'un hébergement web au meilleur prix ?
LWS vous conseille sa formule d’hébergement en promotion à -25% (offre à partir de 1,49€ par mois au lieu de 1,99 €). Non seulement les performances sont au rendez-vous mais vous profitez en plus d’un support exceptionnel.
Prérequis
Pour configurer WordPress nonce, vous devez avoir la possibilité d’accéder au fichier functions.php de votre installation. Pour cela, vous pouvez utiliser un client FTP ou le gestionnaire intégré dans votre compte d’hébergement.
Qu’est-ce qu’un nonce dans WordPress ?
Dans WordPress, un nonce désigne un hachage composé de chiffres et de lettres utilisé pour protéger les URLs ou les formulaires d’un site contre une utilisation abusive. Contrairement aux nonces classiques qui sont utilisés une seule fois, les nonces WordPress peuvent être utilisés plusieurs fois aussi longtemps qu’ils sont valides.
La durée de vie d’un nonce WordPress est généralement de 24 heures avant d’être invalide.
Pourquoi utiliser des nonces sur votre site ?
Les nonces WordPress permettent d’empêcher diverses attaques contre les sites web en ligne et particulièrement les attaques CSRF. Au cours d’une attaque CSRF, un pirate transmet une requête HTTP falsifiée à un utilisateur authentifié dans le but d’exécuter une action interne sur un site. L’utilisateur sera amené à exécuter une action sur son site sans en être conscient.
Sur WordPress, vous pouvez par exemple supprimer une publication avec accédant à l’URL suivante :
http://votresite.fr/wp-admin/post.php?post=440&action=trash
En accédant à ce lien, WordPress vérifie les informations de votre cookie d’authentification et valide la suppression de la publication dont l’identité est « 440 » si vous êtes autorisé.
Lors d’une attaque CSRF, l’attaquant peut déguiser une URL falsifiée et la faire exécuter depuis votre navigateur en utilisant vos propres droits.
<img src="http://votresite.fr/wp-admin/post.php?post=440&action=trash" />
Comme vous le voyez dans l’URL malveillante ci-dessus👆, votre navigateur déclenche une demande à WordPress en attachant automatiquement votre cookie d’authentification. Par conséquent, la demande de suppression de la publication « 440 » sera considérée comme valide et exécuté par WordPress.
En ajoutant un nonce à cet URL, vous empêchez aux pirates d’entreprendre avec succès cette action malveillante. Voici l’URL de la même publication avec un nonce.
http://votresite.fr/wp-admin/post.php?post=440&action=trash&_wpnonce=b192f1235
En ajoutant ce jeton de sécurité, lorsqu’un attaquant tente de supprimer l’article « 440 » sans ajouter le nonce attaché, WordPress renvoie une réponse 403 Forbidden avec un message d’erreur : « Êtes-vous sûr de vouloir faire cela ? ».
Besoin d’un hébergement WordPress rapide et de qualité ?
LWS vous conseille sa formule d’hébergement WordPress en promotion à -20% (offre à partir de 3,99€ par mois au lieu de 4,99 €). Non seulement les performances sont au rendez-vous mais vous profitez en plus d’un support exceptionnel.
Comment créer un nonce dans WordPress ?
Les nonces WordPress peuvent être ajoutés à une chaîne de requête d’une URL, dans un champ masqué d’un formulaire ou dans un autre contexte. Notez que ces jetons de sécurité sont uniques au cours d’une session. Ils seront donc invalides lorsque vous vous déconnectez.
Vous devez accéder au fichier functions.php de votre thème pour agir.
Ainsi, pour ajouter un nonce, vous devez appeler la fonctionwp_nonce_url()
et spécifier l’URL nue ainsi que l’action à effectuer dans une chaîne comme ceci. 👇
$nonce = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID );
Par défaut, WordPress va ajouter un champ nommé,_wpnonce,
vous pouvez spécifier le nom du champ en utilisant l’appel ci-dessous :
$nonce = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID, 'my_nonce' );
Ensuite, pour ajouter un nonce à un formulaire, vous devez appeler la fonction wp_nonce_field()
. Vous devez aussi spécifier la chaîne pour l’action de l’utilisateur. Par exemple, pour supprimer un commentaire, votre nonce devrait ressembler à celui-ci.👇
$nonce= wp_nonce_field( 'delete-comment_'.$comment_id );
Ensuite, si vous souhaitez créer un nonce pour un autre contexte, vous devez appeler la fonction wp_create_nonce()
. Là aussi, vous devez spécifier une chaîne représentant l’action à effectuer :
$nonce = wp_create_nonce( 'mon-action_'.$post->ID );
Et si vous souhaitez modifier la durée de vie par défaut d’un nonce, vous devez utiliser le filtre nonce_life
tout en spécifiant votre durée de vie en seconde :
add_filter( 'nonce_life', function () { return 6 * HOUR_IN_SECONDS; } );
Avec ce filtre, vos nonces auront une durée de vie de six heures et ils ne seront plus valides après ce délai.
Par ailleurs, vous pouvez également modifier le type de message à afficher lorsque le nonce est invalide à l’aide du système de traduction en insérant le code ci-dessous :
function mon_nonce_message ($translation) { if ($translation === 'Êtes-vous sûr de vouloir faire ceci ?') { retour 'Non ! Non! Non!'; } return $translation ; } add_filter('gettext', 'my_nonce_message');
Besoin d'un serveur privé virtuel VPS sécurisé ?
LWS vous conseille sa formule d’hébergement sur VPS en promotion à -75% (offre à partir de 4,99€ par mois au lieu de 19,99 €). Non seulement les performances sont au rendez-vous mais vous profitez en plus d’un support exceptionnel.
Vérifier un nonce dans WordPress
Si vous avez intégré des nonces dans vos URLs, vos formulaires, vous pouvez les vérifier en utilisant la fonction check_admin_referer()
. Vous devez être précis en spécifiant correctement votre nonce. Par exemple, pour vérifier un nonce de suppression d’un commentaire, votre appel peut ressembler à ceci.👇
check_admin_referer( 'delete-comment_'.$comment_id );
Dans l’éventualité où la vérification échoue, WordPress renvoie la réponse 403 Forbidden.
Les utilisateurs qui n’ont pas utilisé le champ par défaut _wpnonce
, doivent spécifier le champ personnalisé et configuré lors de la création du nonce comme dans l’exemple ci-dessous :
check_admin_referer( 'delete-comment_'.$comment_id, 'my_nonce' );
Pour les requêtes AJAX, votre vérification doit être faite en appelant la fonction check_ajax_referer()
. Vous devez toujours spécifier la chaîne représentant l’action :
check_ajax_referer( 'process-comment' );
Si votre nonce est utilisé dans un autre contexte, la vérification sera faite en utilisant la fonction wp_verify_nonce()
. Là encore, vous devez spécifier la chaîne qui représente l’action :
wp_verify_nonce( $_REQUEST['my_nonce'], 'process-comment'.$comment_id );
Besoin d'un serveur privé virtuel VPS sécurisé ?
LWS vous conseille sa formule d’hébergement sur VPS en promotion à -75% (offre à partir de 4,99€ par mois au lieu de 19,99 €). Non seulement les performances sont au rendez-vous mais vous profitez en plus d’un support exceptionnel.
Conclusion
🥳Toutes nos félicitations pour avoir lu cet article. WordPress nonce peut vous aider à protéger votre site contre les attaques malveillantes. Vous avez appris dans cet article, le processus complet pour créer un nonce sur WordPress. Il ne vous reste qu’à passer à l’action !
Avez-vous des questions sur les nonces WordPress ? Utilisez la section commentaire pour nous écrire.
Commentaires (0)