Ich kann sehen, dass wp_nonce_field einen Wert im versteckten Feld erzeugt.
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
Aber wp_verify_nonce verwendet diesen Wert nicht, soweit ich das beurteilen kann, aber ich kann mich irren.
Es sieht so aus, als würde ein Sitzungstoken zur Überprüfung verwendet.
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
Was nützt es dann, ein Wertattribut im ausgeblendeten Feld zu haben?
nonce
verification
ed-ta
quelle
quelle
$nonce
Wert - die Prüfung gibt false zurück, wenn der$nonce
Wert fehlt.$nonce
Wert in diesem Vergleich:hash_equals( $expected, $nonce )
Antworten:
TL; DR
Kurz gesagt,
wp_verify_nonce()
verwendet diesen Wert, da er diesen Wert als erstes Argument erwartet .wp_verify_nonce()
Argumentewp_verify_nonce()
erhält 2 Argumente:$nonce
$action
Der Wert im ausgeblendeten Feld (
'cabfd9e42d'
in Ihrem Beispiel) steht für$nonce
.Das erste Argument ist das Nonce und stammt aus der Anfrage
In der Tat
wp_verify_nonce()
müssen wie folgt verwendet werden:Das erste Argument, an das übergeben wird,
wp_verify_nonce()
ist also genau der Wert, der im ausgeblendeten Feld vorhanden ist.2. Argument: die
wp_create_nonce()
MethodeDas zweite Argument hängt davon ab, wie Sie den Nonce-Wert erstellen.
ZB wenn du getan hast:
Dann müssen Sie Folgendes tun:
Das zweite Argument wurde also als Argument für verwendet
wp_create_nonce()
.2. Argument: die
wp_nonce_field()
MethodeWenn Sie die Nonce mit
wp_nonce_field()
like erstellt haben:Dann müssen Sie die Nonce wie folgt verifizieren:
Diesmal ist die Aktion also alles, was als erstes Argument an übergeben wurde
wp_nonce_field()
.Rekapitulieren
Um die
wp_verify_nonce()
Validierung zu bestehen, müssen Sie 2 Argumente an die Funktion übergeben, eines ist der Wert im Feld nonce hidden, das andere ist die Aktion und hängt davon ab, wie der Wert nonce erstellt wurde.quelle