blog webempresa

¿Qué son los nonces de WordPress y cómo usarlos?

por | Nov 1, 2023 | Tutoriales WordPress Avanzados

¿Cómo enviar emails a usuarios registrados en WordPress?

En lo que respecta al mundo del desarrollo web, la seguridad siempre ha sido un pilar fundamental. Y cuando hablamos de WordPress, una plataforma que alimenta a más del 30% de los sitios web en todo el mundo, la importancia de mantener nuestros datos y contenidos seguros se magnifica aún más.

Aquí es donde entran en juego los nonces. Aunque este término puede parecer técnico y un poco enigmático, su relevancia en el ámbito de la seguridad de WordPress es innegable. Los nonces actúan como guardianes silenciosos, protegiendo nuestro sitio de posibles amenazas y vulnerabilidades.

Pero, ¿qué son con exactitud? ¿Y cómo funcionan? En esta guía, veremos el misterio detrás de los nonces de WordPress, explorando su definición, su papel crucial en la seguridad y las mejores prácticas para implementarlos.

Si estamos buscando la integridad y el buen funcionamiento de nuestro sitio WordPress, en este tema vamos a descubrir cómo los nonces pueden ser nuestros mejores aliados en la prevención de ataques malintencionados. ¡Prepárate para una inmersión profunda en uno de los aspectos más técnicos pero esenciales de WordPress!

¿Qué son los nonces de WordPress?

 

En el desarrollo y la seguridad web, es esencial estar familiarizado con los términos y herramientas que nos ayudan a proteger nuestros sitios. Uno de estos términos es nonce, que podría parecer extraño al principio, pero su función es vital. Originado del concepto number used once (número usado una vez), 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 son una herramienta esencial en el arsenal de seguridad de WordPress. Aunque su nombre pueda sonar algo raro, 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.

Nonces

Para qué sirven los nonces de WordPress

 

En lo que respecta a WordPress, donde la interacción y la dinámica de contenido son constantes, la seguridad se convierte en una prioridad. Aquí es donde los nonces entran en juego, actuando como guardianes silenciosos que trabajan entre bastidores. Pero, ¿cuál es su verdadero propósito?

Los nonces de WordPress sirven como una medida de seguridad para proteger a los sitios de ataques malintencionados. Su función principal es asegurarse de que una solicitud o acción específica provenga de una fuente confiable y que se realice de manera legítima. Al hacerlo, 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.

seguridad

Imaginemos que estamos construyendo un castillo; los nonces serían el foso que rodea las murallas, añadiendo una barrera extra contra posibles invasores. Es una herramienta sutil, pero esencial en la estrategia de seguridad de cualquier sitio WordPress.

Los ataques más habituales en WordPress utilizando este tipo de método pueden ser:

  • Saturar de spam la base de datos de WordPress
  • Crear cuentas de usuario sin que se entere el administrador
  • Borrar cuentas de usuario
  • Borrar información de la web
  • Crear transacciones (sí, de compra) si tienes una tienda online
  • Rellenar formularios de contacto y de comentarios con información falsa o spam

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 con una función que veremos luego en próximos puntos de esta guía.

¿Cómo añadir nonces de WordPress?

 

Añadir nonces en WordPress es como instalar un sistema de alarma en nuestro hogar; es una medida preventiva que te brinda una capa adicional de seguridad. Aunque puede parecer un proceso técnico, WordPress ha simplificado esta tarea para que incluso los usuarios menos experimentados puedan implementarla. A continuación, Veremos algunos pasos para que podamos añadir nonces a nuestro sitio de WordPress.

Creación de un nonce

 

Lo primero que necesitamos es crear un nonce, para esto podemos hacer uso de los comandos habituales o bien hacerlo de forma manual por la función de wp_create_nonce(), esta nos permitirá crear un nonce para una acción específica en caso de que no sea una acción general de nuestro sitio.

$mi_nonce = wp_create_nonce('mi_accion_nonce');

Algunas veces las URL desencadenan un proceso que no es perceptible para nosotros, pero son ejecutados en segundo plano, el hecho de incorporar un nonce a estas URL es fundamental para prevenir cualquier intento de ataque.

Por lo cual se puede usar la funcion wp_nonce_url(), esta nos permitirá implementar en una URL una cadena que denote una acción por parte del usuario, si por ejemplo tenemos que integrar una función específica, lo ideal es nombrarla acorde a lo que realiza.

Tengamos de ejemplo la función de eliminar una entrada de WordPress como (eliminar-entrada) y el código se mostraría de la siguiente forma:

$laurlcompleta = wp_nonce_url( $urlparaescanear, 'borrar-entrada_'.$post->ID );

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);

De este código podemos destacar lo siguiente:

  • 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-comentario_'.$comment_id , ‘nonce_del_formulario’);

Para comprender un poco este código, se ha agregado un nonce para que borre un comentario, es por esto que la función se llama borrar-comentario, y la función específica es nonce_del_formulario. Como esta función hace un llamado a una acción PHP o función, esta mostrara algo como esto:

<input type=”hidden” id=” nonce_de_mi_formulario ” name=” nonce_de_mi_formulario ” value=”685b6655a0″ />
<input type=”hidden” name=”_wp_http_referer” value=”/wp-admin/edit-comments.php” >

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, una de estas es validando un formulario para esto usaremos la función check_admin_referer():

check_admin_referer($action, $nonce);

Esta como hemos visto es la función general, en caso de querer hacer uso de ella para hacer una búsqueda en un formulario tendríamos que hacer uso de la siguiente función:

check_admin_referer( 'borrar-comentario_'.$comment_id, ' nonce_del_formulario’);

También tenemos otros métodos, pero estos ya son un poco 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!');
}

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.
});

Manejo de errores

 

Al trabajar con nonces en WordPress, es probable que nos encontremos con situaciones donde el nonce no se verifica de forma correcta. Esto puede deberse a varias razones, como la expiración del nonce o intentos maliciosos de acceso. Si bien esto puede provocar algunos errores a nivel de nuestro sistema es bueno tener algún respaldo.

Esto nos ayudará a mantener un orden en nuestro sitio, si algo sucede en él, lo mejor es tener un respaldo, ya sea por medio de cualquier plugin de seguridad en WordPress o nuestro superbackup.

El manejo adecuado de errores no solo mejora la experiencia del usuario, sino que también fortalece la seguridad de nuestro sitio web. Al estar preparado y responder de forma adecuada a los errores de nonce, garantizamos que nuestro sitio WordPress sea tanto amigable para el usuario como robusto en términos de seguridad.

Conclusiones

 

Adentrarse en el mundo de WordPress puede parecer una tarea difícil, en especial cuando nos encontramos con términos técnicos y funcionalidades que no son claras. Sin embargo, comprender elementos como los nonces es esencial para cualquier administrador de sitio web que busque garantizar la integridad y seguridad de su plataforma.

Estos pequeños tokens, los nonces, pueden parecer insignificantes a primera vista, pero en realidad son guardianes silenciosos que protegen nuestro sitio de acciones no autorizadas y ataques maliciosos.

A medida que el mundo digital se vuelve más complejo y las amenazas cibernéticas continúan evolucionando, es imperativo que tomemos todas las precauciones necesarias para proteger nuestros activos en línea. Los nonces son una de esas herramientas que, aunque sutiles, tienen un impacto significativo en la seguridad de WordPress. Al aprender a usarlos de forma correcta, no solo estamos blindando nuestro sitio, sino que también estamos garantizando que los visitantes tengan una experiencia fluida y sin problemas.

Sin contar que, la implementación adecuada de nonces refleja un nivel de profesionalismo y cuidado hacia nuestra web y los usuarios. Es una señal de que estás comprometido con la excelencia y la seguridad en todos los aspectos de tu plataforma. Cada detalle cuenta, y la seguridad nunca debe ser una reflexión posterior. ¡Equipa tu sitio con el conocimiento y las herramientas adecuadas, y observa cómo florece en un entorno en línea seguro y confiable!

¿Te ha resultado útil este artículo?

Promo abril