WordPress : Qué son los nonces

Fecha Publicación:       22 de Mayo de 2024
Fecha Modificación:       16 de Julio de 2024

Que son  Los nonces en WordPress

→ Ir a la Página oficial de  https://developer.wordpress.org/apis/security/nonces/

Los tokens de seguridad de WordPress se denominan "nonces".

Nunca se debe confiar en los nonces para la autenticación, la autorización o el control de acceso. Proteja sus funciones usando current_user_can()y siempre asuma que los nonces pueden verse comprometidos. 

Los nonces actúan como guardianes silenciosos, protegiendo nuestro sitio de posibles amenazas y vulnerabilidades en WordPress.

un nonce en WordPress es un número o código especial que se genera y se utiliza una sola vez, para proteger a WordPress de ciertos tipos de ataques maliciosos, en particular el CSRF (Cross-Site Request Forgery).

Imaginemos los nonces como sellos de tiempo temporales que se adjuntan a las solicitudes o formularios. Estos sellos garantizan que la solicitud proviene de una fuente confiable y que no ha sido alterada durante su tránsito. Al ser únicos y temporales, los nonces dificultan que los atacantes repliquen o reutilicen las solicitudes.

Los nonces su función es sencilla, pero poderosa: garantizar que cada acción realizada en nuestro sitio WordPress provenga de fuentes legítimas y seguras. Es como tener un portero que verifica la identidad de cada visitante antes de permitirle entrar, asegurando que solo las personas autorizadas tengan acceso.

los nonces previenen: 

Ataques CSRF (Cross-Site Request Forgery): estos ataques engañan a un usuario para que realice acciones no deseadas en un sitio web en el que ha iniciado sesión. Gracias a los nonces, se puede verificar la autenticidad de cada solicitud, evitando que los atacantes exploten esta vulnerabilidad.

Reutilización de solicitudes: dado que un nonce se utiliza solo una vez, evita que las solicitudes antiguas se reutilicen o se repliquen.

Manipulación de formularios: al incluir un nonce en un formulario, se garantiza que el formulario proviene del sitio original y no ha sido alterado por terceros.

Acciones no autorizadas: los nonces aseguran que las acciones, como la publicación de un comentario o la actualización de una configuración, sean realizadas por usuarios legítimos y no por bots o atacantes.

Los nonces se establecen por un tiempo, en este caso el tiempo por defecto de estos son de 24 horas, el cual puede ser cambiado.

Los nonces de WordPress se usan principalmente para evitar que los hackers ataquen tu web con la vulnerabilidad conocida como Cross-site request forgery. Este tipo de ataques envían peticiones a los servidores sin tu conocimiento y  pueden hacer polvo la web.

 

Incorporar el nonce en formularios o URLs

Es probable que necesitemos esa protección extra en los formularios de WordPress, de esta forma crear un campo oculto es fundamental. El propósito de este campo es ayudarnos a la protección contra bots o spam en WordPress.

El proceso para agregar este nonce a los formularios varía un poco en cuanto a la funcion, wp_nonce_field(). Los argumentos a los que llama esta función es para campos de una web, obtendríamos algo así:

wp_nonce_field( $accion_de_usuario, $nombre_del_nonce);

 

  • accion_de_usuario = muestra la acción principal por la que se creó el nonce
  • nombre_del_nonce = muestra un nombre definido por nosotros mismos para poder identificarlo luego si tenemos que hacer algún ajuste

Un ejemplo que podemos tener, es un nonce para un formulario donde realizara un borrado de un comentario, este se haría de la siguiente forma:

wp_nonce_field( 'borrar-entrada' , 'nombre_del_nonce');

Ejemplo en un formulario real

<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')) ?>" 
class="miformulario1">

  <input type="text" name="name" id="name">
                    
 <?php 
     wp_nonce_field( 'accion_de_usuario' , 'nombre_del_nonce' ); 
  ?>

    <input type="submit" name="submit" value="Enviar Mensaje">
</form>

Verificar un nonce ya creado

Algunas veces solo necesitamos validar que nuestros nonces estén implementados de forma correcta, si este es el caso podemos hacer uso de una función para realizar la verificación.

Hay varias formas de hacerlo:

Metodo más complejos que agregan condicionales a nuestro código a esto nos permitirá crear situaciones más reales donde en caso de no tener acceso a esta función mostrar aún mensaje no autorizado.

if (!wp_verify_nonce($_REQUEST['nombre_del_nonce'], 'mi_accion_nonce')) {
    die('¡Acceso no autorizado!');
}

Ejemplo verificacion en un formulario real

Referencia : https://ayudawp.com/nonces-wordpress/

Establecer un tiempo de vida para el nonce

Como hemos podido ver en puntos antes el nonce tiene una validación o duración principal de 24 horas para los CMS WordPress, sin embargo, es posible modificar este periodo haciendo un llamado a la función nonce_life. Esta función nos permitirá asignar de forma manual la cantidad de horas que se mantendrá activo.

add_filter('nonce_life', function() {
    return 12 * HOUR_IN_SECONDS;  // Establece la duración del nonce a 12 horas.
});

Fuente :

https://www.webempresa.com/blog/que-son-los-nonces-de-wordpress-y-como-usarlos.html

https://ayudawp.com/nonces-wordpress/

 

Articulo : 518 - Veces Leidas
Compartir Articulo:

Artículos Relacionados