Guide des nonces dans WordPress

Publié: 2023-02-12

La sécurité est un sujet vital pour tous les propriétaires de sites Web. Bien qu'il existe de nombreuses stratégies pour assurer la sécurité de votre site Web, l'utilisation de nonces dans WordPress ne doit pas être négligée. Il s'agit de l'une des fonctionnalités de sécurité les plus utilisées et qui évite toute une série de problèmes potentiels.

Un nonce est un "numéro utilisé une fois", et il protège les formulaires et les URL des individus malveillants et autres abus. Ces numéros fonctionnent comme des valeurs d'identification que les navigateurs des utilisateurs devront afficher, afin d'obtenir l'autorisation d'effectuer des actions sensibles.

Dans cet article, nous verrons comment fonctionnent les nonces dans WordPress et comment les créer. Nous verrons ensuite comment vérifier un nonce. Commençons!

Table des matières
1. Comment fonctionnent les nonces dans WordPress ?
2. Créer un nonce
3. Vérifier un nonce
4. Créez des expériences numériques sécurisées sur WP Engine

Comment fonctionnent les nonces dans WordPress ?

L'objectif principal d'un nonce est de protéger votre site Web WordPress contre les attaques malveillantes, telles que les falsifications de requêtes intersites (CSRF). Ce type d'attaque incite les utilisateurs à soumettre un formulaire ou à cliquer sur un lien nuisible à votre site Web. Pour protéger votre site, WordPress vérifie la valeur nonce et n'autorise l'exécution de l'action que si cette valeur est correcte.

Les nonces font déjà partie des fonctionnalités de WordPress et vous n'avez pas besoin de les ajouter aux éléments générés par WordPress. Cela signifie que les actions clés telles que l'ajout et la modification de publications sont automatiquement protégées.

Lorsqu'un nonce est utilisé, il a une durée de vie par défaut de 24 heures. Passé ce délai, le nonce ne peut plus être utilisé pour vérifier l'action pour laquelle il a été défini. Cependant, cette durée de vie peut être ajustée par les administrateurs du site Web.

L'une des attaques CSRF les plus courantes contre lesquelles les nonces se protègent est la suppression malveillante de comptes d'utilisateurs. Après avoir implémenté un nonce, votre écran d'administration générera une URL pour la suppression du compte. WordPress ajoutera un nonce à la fin de cette URL, qui ressemblera à ceci :

http://votredomaine.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315

Si un attaquant tente de remplacer l'ID utilisateur par une autre valeur, telle que "user=8", le nonce sera invalide. La suppression du compte échouera et une page d'erreur 403 Forbidden s'affichera. Il est donc beaucoup plus difficile pour les personnes malveillantes d'attaquer le contenu de votre site.

Il est important de savoir que les nonces peuvent protéger votre site Web, mais vous devez également comprendre comment les mettre en œuvre. Bien qu'ils soient déjà actifs pour les fonctionnalités WordPress par défaut, vous devrez peut-être les implémenter manuellement pour vos thèmes et plugins.

Création d'un nonce

Pour créer un nonce, vous devrez ajouter une fonction au code de votre site Web. Tous les codes de création nonce sont placés dans le fichier functions.php . Pour ouvrir ce fichier, accédez à Apparence > Éditeur de thème dans votre tableau de bord WordPress. A droite, cliquez sur functions.php pour ouvrir l'éditeur de fichiers.

Les nonces sont implémentés séparément pour les URL, les formulaires et les actions. Pour créer une action nonce, ajoutez le code suivant à ce fichier :

 $nonce= wp_create_nonce('$action');

La section "$action" du code doit être ajustée pour refléter l'action que vous souhaitez que le nonce vérifie. Un exemple serait d'utiliser l'action "delete-post", qui configure le nonce pour vérifier les utilisateurs qui tentent de supprimer des messages.

Pour créer un nonce pour une URL, vous pouvez utiliser le code suivant :

 $nonce= wp_nonce_url();

Entre parenthèses, vous devrez indiquer les arguments de la fonction. Il s'agit de l'URL nue et de la chaîne pour les actions de l'utilisateur. La chaîne doit être spécifique à un seul utilisateur, afin d'améliorer la sécurité du nonce.

Si vous souhaitez créer un nonce pour supprimer un compte utilisateur, vous pouvez utiliser cet extrait :

 $nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);

WordPress attribuera par défaut le nom du nonce à "_wpnonce", mais vous pouvez le mettre à jour en ajoutant le nom de votre choix à la fin de la chaîne ci-dessus.

Pour créer un nonce pour un formulaire, incluez ce code :

 $nonce= wp_nonce_field();

Entre parenthèses, vous devrez ajouter une chaîne pour les actions de l'utilisateur. Une fois cela fait, la fonction crée deux champs masqués dans le formulaire, le premier contenant la valeur de hachage nonce. Le deuxième champ est l'URL actuelle. La fonction finale devrait ressembler à ceci :

 $nonce= wp_nonce_field('remove-comment_'.$comment_id);

Cette fonction nonce aura également le nom nonce WordPress par défaut. Cependant, c'est aussi quelque chose que vous pouvez modifier si vous préférez.

Vérifier un nonce

Après avoir ajouté un nonce à votre site WordPress, il est important que vous le vérifiiez. Cela garantit que le nonce fonctionne correctement et assure la sécurité de votre site Web.

Différentes méthodes sont utilisées pour vérifier le nonce des URL et des formulaires. Pour vérifier une URL nonce, ajoutez le code suivant au fichier functions.php :

 wp_verify_nonce($nonce, $action);

Dans cette fonction, ajustez "$ nonce" au nom du nonce que vous souhaitez vérifier, tel que "delete-user". Ensuite, modifiez la chaîne "$ action" à l'heure spécifique à laquelle le nonce est créé. Lorsque la fonction s'exécute, elle renvoie "false" si le nonce n'est pas valide.

Si le nonce est valide, en revanche, la fonction renverra soit un 1 soit un 2. Cela vous indique l'âge du nonce. Une valeur égale à 1 signifie que le nonce a été créé au cours des 12 dernières heures. Une valeur égale à 2 signifie que le nonce a été créé il y a plus de 12 heures, mais il y a moins de 24 heures.

Si vous avez ajouté un nonce à un formulaire, le code suivant est requis pour le vérifier :

 check_admin_referer($action, $nonce);

Si la valeur nonce est valide, le formulaire fonctionnera comme prévu. Cependant, si le nonce n'est pas valide, le navigateur de l'utilisateur le redirigera vers une page d'erreur 403 Forbidden.

Créez des expériences numériques sécurisées sur WP Engine

La sécurité est vitale pour un site Web stable, et les nonces ajoutent une couche de protection supplémentaire. Pour les implémenter, il vous suffit d'ajouter du code à votre fichier functions.php . Le code utilisé varie en fonction du type de nonce que vous souhaitez créer et de l'action que vous souhaitez protéger.

Bien que la création et la mise en œuvre de nonces améliorent la sécurité du site, il existe également d'autres protocoles de sécurité à prendre en compte. Heureusement, la plate-forme d'hébergement WordPress sécurisée de WP Engine offre certaines des meilleures ressources de sécurité pour les utilisateurs et les développeurs. Cela vous laisse plus de temps pour vous concentrer sur le perfectionnement de votre site WordPress !