Puedo ver que wp_nonce_field genera un valor en el campo oculto.
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
Pero wp_verify_nonce no está usando ese valor por lo que puedo decir, pero puedo estar equivocado.
Parece que está usando un token de sesión para la verificación.
$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
Entonces, ¿qué sentido tiene tener un atributo de valor en el campo oculto?
nonce
verification
ed-ta
fuente
fuente
$nonce
valor allí: el cheque devuelve falso si$nonce
falta el valor.$nonce
valor en esta comparación:hash_equals( $expected, $nonce )
Respuestas:
TL; DR
En resumen,
wp_verify_nonce()
usa ese valor porque espera ese valor como su primer argumento.wp_verify_nonce()
argumentoswp_verify_nonce()
recibe 2 argumentos:$nonce
$action
El valor en el campo oculto (
'cabfd9e42d'
en su ejemplo) representa el$nonce
.El primer argumento es el nonce, y proviene de la solicitud
De hecho,
wp_verify_nonce()
hay que usarlo así:Entonces, el primer argumento pasado
wp_verify_nonce()
es exactamente el valor que está presente en el campo oculto.2do argumento: el
wp_create_nonce()
métodoCon respecto al segundo argumento, depende de cómo se construye el valor nonce.
Por ejemplo, si lo hiciste:
Entonces necesitas hacer:
Entonces, el segundo argumento es para lo que se utilizó como argumento
wp_create_nonce()
.2do argumento: el
wp_nonce_field()
métodoSi creó el nonce usando
wp_nonce_field()
como:Luego debe verificar el nonce de esta manera:
Entonces, esta vez, la acción es lo que se pasa como primer argumento
wp_nonce_field()
.Resumen
Para pasar la
wp_verify_nonce()
validación, debe pasar 2 argumentos a la función, uno es el valor en el campo oculto nonce, el otro es la acción y depende de cómo se construyó el valor nonce.fuente