Puis-je utiliser le même nonce pour plusieurs demandes sur la même page?

12

Ou cela brise-t-il le but de la nonce, que je reconnais ne pas bien comprendre? :)

Par exemple, sur deux requêtes ajax exécutées au chargement de la page ou lorsqu'un clic est fait sur un élément:

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo2',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });
    
posée Alex 27.12.2011 - 17:38

2 réponses

4

La fonction de création de fichier WordPress ne doit être appelée que sur le init hook:

  

Utilisez init ou toute action ultérieure pour appeler cette fonction. Appel   cela en dehors d'une action peut conduire à des problèmes. Voir # 14024 pour plus de détails.

Comme le init hook "s'exécute après le chargement de WordPress, mais avant que les en-têtes ne soient envoyés", des nonces sont créés à chaque demande de page entière (et non à une demande ajax). Donc, techniquement, vous pouvez utiliser le même nonce pour plusieurs requêtes, mais vous devez les rendre uniques pour chaque requête , comme d'autres réponses l'ont souligné.

Pour en savoir plus sur ce que sont les nonces:

des nonces sont envoyées à chaque demande Ajax en tant que un jeton de sécurité, pour vérifier que la demande était destinée à l'utilisateur.

    
réponse donnée Naoise Golden 27.12.2011 - 19:00
9

Oui, les nonces sont très déroutants. :)

Bien que le concept de nonce implique qu'il ne soit utilisé qu'une seule fois, WordPress ne l'impose pas et techniquement, vous pouvez utiliser le nonce plusieurs fois.

Cependant, étant donné que nonce est utilisé pour vérifier l'intention (comme dans le cas où vous vouliez vraiment effectuer une action spécifique), différentes nonces doivent être générées et vérifiées.

    
réponse donnée Rarst 27.12.2011 - 19:22

Lire d'autres questions sur les étiquettes