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

13

Oder verstößt dies gegen den Zweck des Nonces, von dem 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; ?>' }
 });
Alex
quelle

Antworten:

4

Die WordPress Nonce Creation Funktion ist nur auf dem initHook 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 initHaken "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 für jede Anfrage eindeutig machen , wie andere Antworten gezeigt haben.


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

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

Naoise Golden
quelle
Diese Schlussfolgerung scheint auf der falschen Annahme zu beruhen, dass Nonces ein Weg sind, Identitätsdiebstahl zu verhindern. Siehe wordpress.stackexchange.com/a/32361/205
scribu
@scribu danke für den Einblick. Ich habe die Antwort bearbeitet.
Naoise Golden
9

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 es wirklich beabsichtigt haben, um eine bestimmte Aktion auszuführen), sollten bei verschiedenen Aktionen unterschiedliche Nonces generiert und überprüft werden.

Rarst
quelle