¿Qué significa wp_verify_nonce()?

2 minutos de lectura

he leído el referencia de esta función en WordPress pero todavía no entiendo lo que realmente hace esta función.

Estoy leyendo un tutorial sobre cómo crear un cuadro meta en wordpress y tengo este código dentro de la función que guarda los datos:

if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
                return $post_id;
}

¿Alguien puede explicar brevemente cuál es el significado de wp_verify_nonce() ?

avatar de usuario
djb

El nonce es un ‘número usado una vez’, un código que WP usa para asegurarse de que los datos POST provengan de un lugar seguro. Esto es útil para asegurarse de que su complemento no termine digiriendo datos de una fuente no segura (ver Falsificación de solicitud entre sitios).

Esta entrada de blog de Mark Jaquith es útil para entenderlos.

[nonces] son exclusivos de la instalación de WordPress, del usuario de WordPress, de la acción, del objeto de la acción y del momento de la acción (ventana de 24 horas). Eso significa que si alguna de estas cosas cambia, el nonce no es válido. Entonces, si (de alguna manera) intercepta un nonce que estoy usando, en primer lugar, solo tendrá 24 horas para usar esta clave para intentar engañarme.

Para crear un nonce debes dar wp_create_nonce una determinada cadena, proporcionando el ‘contexto’ para el nonce. Te devuelve una cadena: el mismo nonce. Luego incluye este nonce como parte de su solicitud POST. La página receptora debe crear un nonce propio, usando el mismo contexto, y ver si coinciden.

En este caso, el contexto dado es plugin_basename(__FILE__). Esto generará la misma cadena cada vez que se llame desde el mismo complemento (ver aquí).

Cuando tu wp_verify_nonce recibe un nonce creado en las mismas circunstancias especificadas por Mark, con la misma cadena de contexto, devuelve verdadero.

En breve:

!wp_verify_nonce

devuelve verdadero si wp_verify_nonce devuelve falso.

($_POST[$meta_box['name'].'_noncename'], 

primer argumento a wp_verify_nonce: el nonce para comprobar. Este código obtiene el nonce de la solicitud de publicación, almacenada en $_POST global.

plugin_basename(__FILE__) )

Segundo argumento a wp_verify_nonce: el contexto para generar el nuevo nonce contra el cual se verificará el primero.

{ return $post_id; }

Si el nonce no coincide, deje de ejecutar la función actual, devolviendo la variable $post_id.

  • Gran respuesta. 1 pequeñas adiciones (que pueden ser útiles si desea obtener más información en Google): “para asegurarse de que los datos POST provienen de un lugar determinado” = para proteger contra CSRF (“falsificación de solicitud entre sitios”).

    – futtta

    25 de agosto de 2011 a las 12:27

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad