Nonces können mehrfach wiederverwendet werden? Fehler / Sicherheitsproblem?

7

Ich habe gelesen, dass Nonces nur zur einmaligen Verwendung bestimmt sind. Nach einer Ajax-Anforderung sollten Sie eine neue Nonce ausgeben, damit bei der nächsten Ajax-Anforderung eine neue Nonce an den Server gesendet wird.

Ich habe jedoch gerade wiederholte Ajax-Anforderungen mit demselben Nonce-Token getestet und für jede Anforderung wp_verify_noncetrue auf demselben Token zurückgegeben, was bedeutet, dass sie Dutzende Male wiederverwendet werden kann.

Ist das beabsichtigt oder ein Fehler?

Muss ich bei jeder Ajax-Anfrage immer noch neue Nonces ausgeben, oder kann dieselbe weiterhin für alle zukünftigen Anfragen funktionieren?

Klicken Sie auf Upvote
quelle

Antworten:

11

In WordPress sind Nonces spezifisch für den Benutzer, die ausgeführte Aktion und die Zeit. In Bezug auf die Zeit ist eine Nonce 24 Stunden gültig und ändert sich alle 12 Stunden. Dies wird als akzeptabler Kompromiss angesehen, da die Verwendung einer einmal verwendeten realen Zahl das Hinzufügen eines Verfolgungssystems und das Speichern der verwendeten Nonces beinhalten würde.

Nonces werden ebenfalls gehasht, sodass die NONCE_SALT-Konstante auch Teil der resultierenden Nonce ist. Durch Ändern von NONCE_SALT werden alle Nonces sofort ungültig.

Sie sollten jedes Mal eine neue Nonce ausgeben. Auf diese Weise wird Ihr Code weiterhin angemessen damit umgehen, wenn das Timing oder die Methodik in Zukunft angepasst werden muss.

Otto
quelle
5
Gibt es aus Neugier eine Möglichkeit, eine einmal verwendete Nonce ungültig zu machen?
Phatskat
1
Wenn sich jemand anders wundert, werden Wordpress-Nonces nicht gespeichert, sodass sie nicht ungültig werden können, ohne benutzerdefiniertes Verhalten hinzuzufügen.
Ars265