Je peux voir que wp_nonce_field génère une valeur dans le champ caché.
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
Mais wp_verify_nonce n'utilise pas cette valeur pour autant que je sache, mais je peux me tromper.
Il semble qu'il utilise un jeton de session pour la vérification.
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
Quel est alors l'intérêt d'avoir un attribut de valeur dans le champ caché?
nonce
verification
ed-ta
la source
la source
$nonce
valeur - le chèque renvoie faux si la$nonce
valeur est manquante.$nonce
valeur dans cette comparaison:hash_equals( $expected, $nonce )
Réponses:
TL; DR
En bref,
wp_verify_nonce()
utilise cette valeur car il attend cette valeur comme premier argument.wp_verify_nonce()
argumentswp_verify_nonce()
reçoit 2 arguments:$nonce
$action
La valeur dans le champ caché (
'cabfd9e42d'
dans votre exemple) représente le$nonce
.Le premier argument est le nonce, et vient de la requête
En fait,
wp_verify_nonce()
doivent être utilisés comme suit:Ainsi, le premier argument transmis à
wp_verify_nonce()
est exactement la valeur présente dans le champ caché.2ème argument: la
wp_create_nonce()
méthodeEn ce qui concerne le deuxième argument, cela dépend de la façon dont vous créez la valeur nonce.
Par exemple, si vous l'avez fait:
Ensuite, vous devez faire:
Donc, le deuxième argument est celui qui a été utilisé comme argument
wp_create_nonce()
.2ème argument: la
wp_nonce_field()
méthodeSi vous avez créé le nonce en utilisant
wp_nonce_field()
comme:Ensuite, vous devez vérifier le nonce comme suit:
Donc, cette fois, l'action est celle qui est passée en premier argument
wp_nonce_field()
.résumer
Pour passer la
wp_verify_nonce()
validation, vous devez passer 2 arguments à la fonction, l'un est la valeur dans le champ caché nonce, l'autre est l' action , et dépend de la façon dont la valeur nonce a été construite.la source