it-swarm.com.de

Kann ich dieselbe Nonce für mehrere Anfragen auf derselben Seite verwenden?

Oder bricht dies den Zweck des Nonces, den ich zugeben muss, dass ich ihn nicht ganz verstehe? :)

Zum Beispiel bei zwei Ajax-Anforderungen, die beim Laden einer Seite ausgeführt werden, oder wenn auf etwas geklickt wird:

 $.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; ?>' }
 });
12
Alex

Die WordPress Nonce Creation Funktion ist nur auf dem init Hook aufzurufen:

Verwenden Sie den Befehl init oder eine nachfolgende Aktion, um diese Funktion aufzurufen. Das Aufrufen außerhalb einer Aktion kann zu Problemen führen. Siehe # 14024 für Details.

Da der Hook init "nach dem Laden von WordPress, aber vor dem Senden von Headern ausgeführt wird", werden bei jeder Ganzseitenanforderung (keine Ajax-Anforderung) Nonces erstellt. Technisch gesehen können Sie also dieselbe Nonce für mehrere Anfragen verwenden, aber Sie sollten sie bei jeder Anfrage eindeutig machen , wie andere Antworten gezeigt haben.


Um etwas mehr Licht darüber zu bringen, was Noncen sind:

Nonces werden bei jeder Ajax-Anforderung als Sicherheitstoken gesendet, um sicherzustellen, dass die Anforderung vom Benutzer beabsichtigt wurde.

4
Naoise Golden

Ja, Noncen sind sehr verwirrend. :)

Während das Konzept von Nonce impliziert, dass es nur einmal verwendet wird, erzwingt WordPress dies nicht und technisch gesehen können Sie Nonce mehrmals verwenden.

Da jedoch nonce verwendet wird, um die Absicht zu überprüfen (wie Sie eigentlich beabsichtigten, eine bestimmte Aktion auszuführen), sollten bei verschiedenen Aktionen unterschiedliche Nonces generiert und überprüft werden.

9
Rarst