Maison >Tutoriel CMS >WordPresse >Que sont WordPress Nonces?

Que sont WordPress Nonces?

Jennifer Aniston
Jennifer Anistonoriginal
2025-02-16 12:58:09663parcourir

WordPress Security: Utilisez NONCE pour protéger les thèmes et le code du plugin

La protection de la sécurité des thèmes WordPress ou du code plug-in est cruciale et peut effectivement empêcher les attaques des utilisateurs malveillants. Nous avons déjà couvert comment nettoyer, échapper et valider les données du formulaire dans WordPress, et comment utiliser le scanner VIP pour améliorer la qualité des thèmes WordPress. Aujourd'hui, nous explorerons comment nonce (numérique ponctuel) peut aider à garder les thèmes et plugins WordPress.

points clés

  • WordPress Nonce, ou "numéro d'utilisation unique", est un jeton de sécurité unique utilisé pour améliorer la sécurité des sites Web WordPress en vérifiant les demandes de l'utilisateur et en empêchant des tentatives malveillantes. Ils sont particulièrement utiles pour prévenir les attaques de contrefaçon de demande de site croisé (CSRF).
  • Nonce fonctionne en générant un jeton unique pour chaque session d'utilisateur, soumission de formulaire ou demande AJAX. Ce jeton est ensuite vérifié lors du traitement de la demande, et s'il ne correspond pas, la demande est rejetée. Cela rend difficile pour les attaquants de prédire ou abusent du jeton.
  • La création de nonce dans WordPress est réalisée en utilisant la fonction WordPress wp_create_nonce(), qui accepte un paramètre de chaîne unique représentant l'opération à protéger. Vérification NONCE est effectuée en utilisant la fonction wp_verify_nonce(), qui accepte deux paramètres: le nonce à vérifier et l'opération associée.
  • Nonce peut être utilisé pour les demandes AJAX dans WordPress, ajoutant une couche de sécurité supplémentaire pour empêcher les attaques CSRF. NONCE est également spécifique à l'utilisateur, offrant une couche de sécurité supplémentaire en veillant à ce que le nonce créé pour un utilisateur ne soit pas valide pour un autre.

Qu'est-ce que WordPress Nonce?

wordpress nonce est défini comme:

… un «numéro d'utilisation unique» pour aider à protéger les URL et les formulaires de certains types d'abus (malveillants ou autres). https://www.php.cn/link/c5af1dfde10402285102771ad64b3dac

Alors que dans WordPress, nonce n'est pas un nombre technique (c'est un hachage de lettres et de nombres), cela aide à empêcher les utilisateurs malveillants d'exécuter des actions.

Le travail de WordPress Nonce est divisé en deux parties:

  • Créer nonce (valeur de hachage), soumettre par formulaire ou action, et
  • Vérifiez NONCE, puis acceptez les données du formulaire ou exécutez l'action.

Par exemple, lorsque vous supprimez un message dans l'écran d'administration WordPress, vous remarquerez que l'URL contient un paramètre _wpnonce:

https://www.php.cn/link/18175d262a01ebf04bc03e38e48e3ffc

La routine pour supprimer un message vérifiera si le post 542 a une valeur nonce de a03ac85772 avant de supprimer le message. Si nonce n'existe pas ou ne correspond pas à la valeur attendue, le poste ne sera pas supprimé.

Cela empêche les utilisateurs malveillants de supprimer potentiellement un grand nombre de messages. Par exemple, les éléments suivants ne fonctionneront pas car nonce appartient au post ID 542:

https://www.php.cn/link/322d830da1130169fb4ca1c7543799d0 https://www.php.cn/link/dd4143061640d55fb312dd0ce8afa76e https://www.php.cn/link/9e0f9113b44003201076a9fade1b72d8

What Are WordPress Nonces?

Voyons maintenant comment implémenter WordPress Nonce dans un plugin.

Configurez notre plugin WordPress

Commençons par un plugin de base avec son propre écran de paramètres. L'écran Paramètres a un champ qui peut être soumis et enregistré dans le tableau des options WordPress.

Entrez le code suivant dans un nouveau fichier dans wp-content/plugins/implementing-wordpress-nonces/implementing-wordpress-nonces.php:

<code class="language-php">// ... (插件代码,与原文相同) ...</code>

Activez le plugin via WordPress Management & GT;

Cliquez sur cet élément et vous serez emmené sur l'écran des paramètres, avec un seul champ: What Are WordPress Nonces?

Entrez n'importe quelle valeur, cliquez sur "Enregistrer", si tout fonctionne, vous verrez les informations de confirmation et la valeur que vous venez d'entrer: What Are WordPress Nonces?

démontrer la vulnérabilité de sécurité What Are WordPress Nonces?

Entrez l'URL suivante dans votre barre d'adresse de navigateur Web (remplacez le nom de domaine par où vous avez installé WordPress):

https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8

Attention Que s'est-il passé? La valeur est simplement enregistrée en tant qu'ABC, accédez simplement directement à l'URL et connectez-vous à WordPress:

Bien que nous puissions utiliser What Are WordPress Nonces? dans notre code au lieu de

(nous utilisons

pour démontrer plus facilement les problèmes de sécurité), cela n'aide pas - les utilisateurs malveillants peuvent toujours utiliser eux-mêmes ou vous inciter à cliquer sur Le lien vous permet d'envoyer une demande de message à cet écran, ce qui entraîne une modification des valeurs d'option. $_POST $_REQUEST C'est ce qu'on appelle le contrefaçon de demande croisée (ou le CSRF). Les sites Web malveillants, les e-mails, les applications, etc. entraîneront un navigateur Web de l'utilisateur à effectuer des opérations inutiles. $_REQUEST

Nous allons maintenant créer et vérifier WordPress NONCE pour empêcher cette attaque de devenir possible.

Protégez nos plug-ins avec nonce

Comme mentionné précédemment, ce processus est divisé en deux étapes: nous devons d'abord créer un nonce qui sera soumis avec notre formulaire. Deuxièmement, nous devons vérifier le nonce lors de la soumission du formulaire.

Pour créer un champ nonce dans notre forme, nous pouvons utiliser wp_nonce_field():

Obtenir ou afficher des champs de formulaire cachés nonce ... utilisés pour vérifier que le contenu de la demande de formulaire provient du site actuel, pas ailleurs ...

Ajouter le code suivant au-dessus de notre bouton d'entrée:

<code class="language-php">// ... (插件代码,与原文相同) ...</code>

wp_nonce_field accepter quatre paramètres - les deux premiers sont les plus importants:

  • $action: Ceci détermine l'opération spécifique que nous exécutons et devrait être unique. Il est préférable d'utiliser le nom du plugin comme préfixe de l'opération, car il peut y avoir plusieurs opérations en cours d'exécution. Dans ce cas, nous enregistrons quelque chose, nous utilisons donc implementing_wordpress_nonces_save
  • $name: Ceci détermine le nom du champ caché créé par cette fonction. Comme mentionné ci-dessus, nous avons utilisé le nom du plugin comme préfixe, nous l'avons donc nommé implementing_wordpress_nonces_nonce

Si nous rechargeons l'écran des paramètres, modifiez notre valeur et cliquez sur Enregistrer, vous remarquerez que la valeur changera toujours. Nous devons maintenant mettre en œuvre la vérification du champ non-non soumis, en utilisant wp_verify_nonce( $name, $action ):

Vérifiez que NONCE est correct et n'a pas expiré par rapport à l'opération spécifiée. Cette fonction est utilisée pour vérifier le nonce envoyé dans la demande actuelle, généralement accessible via la variable PHP $_REQUEST.

Remplacez la partie "Enregistrer les paramètres" de la fonction admin_screen() de notre plugin par le code suivant:

<code class="language-php">wp_nonce_field( 'implementing_wordpress_nonces_save', 'implementing_wordpress_nonces_nonce' );</code>

Ce code effectue les opérations suivantes:

  • Tout d'abord, il vérifie si nous avons soumis quelque chose.
  • Ensuite, il vérifie si notre champ Nonce existe et, dans l'affirmative, essayez de vérifier la valeur de NONCE en fonction de l'action que nous attendons.
  • Si le chèque passe, mettez à jour les options.
  • Si le chèque échoue, nous lancerons une erreur 403 avec le message "non valide non -ce spécifié".

Pour vous assurer que notre nonce est créé et vérifié, essayons à nouveau d'accéder à notre URL directe "malveillante":

https://www.php.cn/link/0e143c3bef0f7759c230664c4dc905f8 .

>

Si notre nonce est implémenté et est en cours de vérification, vous verrez une notification "non valide de spécification nonce":

What Are WordPress Nonces?

... (le reste est le même que le texte d'origine, mais la langue et l'expression sont ajustées en détail pour maintenir l'intention d'origine inchangée) ....

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn