Eu posso ver que wp_nonce_field gera um valor no campo oculto.
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
Mas wp_verify_nonce não está usando esse valor, tanto quanto eu posso dizer, mas posso estar errado.
Parece que está usando um token de sessão para verificação.
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
Então, qual é o sentido de ter um atributo value no campo oculto?
nonce
verification
ed-ta
fonte
fonte
$nonce
valor - a verificação retorna false se o$nonce
valor estiver ausente.$nonce
valor nesta comparação:hash_equals( $expected, $nonce )
Respostas:
TL; DR
Em resumo,
wp_verify_nonce()
usa esse valor porque espera esse valor como seu primeiro argumento.wp_verify_nonce()
argumentoswp_verify_nonce()
recebe 2 argumentos:$nonce
$action
O valor no campo oculto (
'cabfd9e42d'
no seu exemplo) representa o$nonce
.O primeiro argumento é o nonce e vem da solicitação
De fato,
wp_verify_nonce()
deve ser usado assim:Portanto, o primeiro argumento passado
wp_verify_nonce()
é exatamente o valor presente no campo oculto.Segundo argumento: o
wp_create_nonce()
métodoEm relação ao segundo argumento, isso depende de como você constrói o valor nonce.
Por exemplo, se você fez:
Então você precisa fazer:
Portanto, o segundo argumento é o que foi usado como argumento
wp_create_nonce()
.Segundo argumento: o
wp_nonce_field()
métodoSe você criou o nonce usando o seguinte
wp_nonce_field()
:Então você precisa verificar o nonce assim:
Portanto, desta vez, a ação é o que passou como primeiro argumento para
wp_nonce_field()
.Recapitular
Para passar na
wp_verify_nonce()
validação, você precisa passar 2 argumentos para a função, um é o valor no campo oculto nonce, o outro é a ação e depende de como o valor nonce foi construído.fonte