Qué son los nonces de WordPress y para qué sirven

Caché nonce de WordPress

Un nonce es un tipo de clave secreta temporal o token que es único para ti. Es un mecanismo de seguridad que puede poner una capa extra de seguridad a tus plugins o temas para evitar varios tipos de ataques como Cross-Site Request Forgery (CSRF) o ataques XSRF.

Además, los nonces de WordPress no son dígitos, sino un hash formado por números y letras. Tienen un “tiempo de vida” finito tras el cual expirarán. Su validez es de 24 horas para una operación concreta. Durante ese tiempo, se generará el nonce para un usuario determinado en una operación determinada. El nonce para esa acción seguirá siendo el mismo para ese usuario hasta que ese ciclo de vida del nonce se haya completado.

En este caso, si algún atacante asume el identificador de puesto, le será imposible adivinar la clave nonce. Como resultado, cuando quiera ejecutar la operación tendrá que pasar una comprobación de autenticación. Cuando esta comprobación falle, WordPress enviará una respuesta “403 Forbidden” y también un mensaje de error, ‘¿Está seguro de que quiere hacer esto?’.

En resumen, la implementación de nonce en WordPress puede proteger la funcionalidad de los plugins y temas de WordPress, lo que hará que su sitio sea más seguro. Por lo tanto, cada desarrollador de WordPress debe tener conocimiento sobre el nonce de WordPress, cómo se ve y cómo funciona.

¿Por qué debo utilizar nonce?

El nonce es utilizado por los protocolos de autenticación para garantizar que las comunicaciones antiguas no puedan ser reprocesadas. Hashing. Los sistemas de prueba de trabajo utilizan valores nonce para variar la entrada a una función hash criptográfica. Esto ayuda a cumplir condiciones arbitrarias y proporcionar una dificultad deseada.

  WordPress: más de 50 millones de sitios

¿Para qué sirve wp_nonce_field?

Descripción. El campo nonce se utiliza para validar que el contenido del formulario proviene de la ubicación en el sitio actual y no de otro lugar. El nonce no ofrece una protección absoluta, pero debería proteger contra la mayoría de los casos. Es muy importante utilizar el campo nonce en los formularios.

¿Cómo utilizo el nonce en un formulario en WordPress?

WordPress asignará por defecto el nombre “_wpnonce” al nonce, pero puede actualizarlo añadiendo el nombre que desee al final de la cadena anterior. Para crear un nonce para un formulario, incluya este código: $nonce= wp_nonce_field(); En los corchetes, tendrá que añadir una cadena para las acciones del usuario.

Error Nonce

La rutina, que borra un mensaje, comprobará que el mensaje 542 tiene un valor nonce de a03ac85772 antes de borrar el mensaje. Si el nonce no existe, o no coincide con el valor esperado, el mensaje no será borrado.

Aunque podríamos utilizar $_POST en lugar de $_REQUEST en nuestro código (hemos utilizado $_REQUEST para que sea más fácil demostrar el problema de seguridad), esto no ayudaría – un usuario malintencionado todavía podría, ya sea por sí mismo o engañándote para que hagas clic en un enlace – hacer que envíes una solicitud POST a esta pantalla, lo que resulta en el cambio del valor de la opción.

Si recargamos la pantalla de configuración, cambiamos nuestro valor y hacemos clic en Guardar, verás que el valor sigue cambiando. Ahora necesitamos implementar una comprobación para el campo nonce que fue enviado, usando wp_verify_nonce( $name, $action ):

Verifica que un nonce es correcto y no ha caducado con respecto a una acción especificada. La función se usa para verificar el nonce enviado en la petición actual a la que normalmente se accede mediante la variable PHP $_REQUEST.

  Suscripciones por email sin feedburner

Hemos aprendido qué es un nonce de WordPress, y cómo WordPress utiliza los nonces para prevenir ataques CSRF maliciosos. Construyendo un plugin básico de WordPress, hemos mostrado como un plugin – y WordPress – pueden ser potencialmente explotados si los nonces no son creados y verificados.

WordPress crear nonce

Autores de plugins, escuchad. Para evitar que aparezca el cuadro de diálogo de retrocompatibilidad “¿Está seguro?” cuando los usuarios agnósticos de HTTP_REFERER interactúen con sus plugins (especialmente las páginas de opciones), necesita añadir capacidades nonce a sus plugins. No te preocupes, es muy fácil.

Para proteger tu <form> con un nonce, simplemente usa la función wp_nonce_field() dentro del <form> (yo lo haría justo después de la etiqueta de apertura.) Para compatibilidad con versiones anteriores, usa function_exists() para ejecutar el código condicionalmente. La cadena que pases a la función debe ser única para tu plugin. Usa la siguiente convención: plugin-name-action_object Así, si mi plugin se llama “cool plugin” y la acción que hace el formulario es “update options” y el objeto es “advanced options”, haría cool-plugin-update-options_advanced. La parte del “objeto” no es necesaria, pero si tiene varios formularios, proteja cada uno con un objeto diferente para obtener el máximo nivel de protección.

Si estás realizando acciones basadas en el clic de enlaces, puedes añadir un nonce a tus enlaces usando wp_nonce_url() que toma dos parámetros. El primero es la URL del enlace, el segundo es tu clave nonce. Tenga en cuenta el uso de function_exists() para compatibilidad con versiones anteriores:

WordPress desactivar nonce

En un artículo anterior explicamos los sencillos pasos que puedes seguir para asegurar tu sitio web WordPress. Con el mismo tema en mente, vamos a ver otro aspecto de los sitios web WordPress, los nonces, qué son y cómo pueden afectar a tu sitio desde el punto de vista de la seguridad.

En un sitio web WordPress, los nonces se utilizan para validar el contenido de un formulario y evitar actividades maliciosas. Más específicamente, un nonce protege su sitio web de ataques de falsificación de petición de sitios cruzados (CSRF). No se considera una protección garantizada, pero es suficiente en la mayoría de los casos.

  El Español el segundo idioma en WordPress-com

Son hashes formados por números y letras. Se utilizan una sola vez y tienen un ciclo de vida limitado, lo que significa que transcurrido un tiempo determinado caducan. Durante su ciclo de vida, el nonce seguirá siendo el mismo y estará relacionado con un usuario y un contexto específicos.

Cuando un usuario envía un formulario, por ejemplo, un ataque CSRF puede forzar al usuario a ejecutar acciones no deseadas. Dependiendo del nivel de acceso del usuario implicado, el daño puede ir desde el cambio de una dirección de correo electrónico hasta el compromiso de todo el sitio.