Guía de Nonces en WordPress

Publicado: 2023-02-12

La seguridad es un tema vital para todos los propietarios de sitios web. Si bien existen muchas estrategias para mantener su sitio web seguro, no se debe pasar por alto el uso de nonces en WordPress. Esta es una de las características de seguridad más utilizadas y evita una variedad de posibles problemas.

Un nonce es un 'número que se usa una vez' y protege formularios y URL de personas malintencionadas y otros usos indebidos. Estos números funcionan como valores de identificación que los navegadores de los usuarios deberán mostrar para obtener permiso para llevar a cabo acciones confidenciales.

En este artículo, veremos cómo funcionan los nonces en WordPress y cómo crearlos. Luego discutiremos cómo verificar un nonce. ¡Empecemos!

Tabla de contenido
1. ¿Cómo funcionan los nonces en WordPress?
2. Creando un Nonce
3. Verificando un Nonce
4. Cree experiencias digitales seguras en WP Engine

¿Cómo funcionan los nonces en WordPress?

El propósito principal de un nonce es proteger su sitio web de WordPress de ataques maliciosos, como las falsificaciones de solicitudes entre sitios (CSRF). Este tipo de ataque engaña a los usuarios para que envíen un formulario o hagan clic en un enlace que es dañino para su sitio web. Para proteger su sitio, WordPress verifica el valor de nonce y solo permite que la acción se complete si ese valor es correcto.

Los nonces ya forman parte de la funcionalidad de WordPress y no es necesario agregarlos a los elementos generados por WordPress. Esto significa que las acciones clave, como agregar y editar publicaciones, se protegen automáticamente.

Cuando se usa un nonce, tiene una vida útil predeterminada de 24 horas. Después de ese tiempo, el nonce ya no se puede usar para verificar la acción para la que se ha definido. Sin embargo, los administradores del sitio web pueden ajustar esta vida útil.

Uno de los ataques CSRF más comunes contra los que protegen los nonces es la eliminación maliciosa de cuentas de usuario. Después de implementar un nonce, su pantalla de administración generará una URL para la eliminación de la cuenta. WordPress agregará un nonce al final de esa URL, que se verá así:

http://tudominio.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315

Si un atacante intenta reemplazar la ID de usuario con otro valor, como "usuario = 8", el nonce no será válido. La eliminación de la cuenta fallará y aparecerá una página de error 403 Prohibido. Esto hace que sea mucho más difícil para personas malintencionadas atacar el contenido de su sitio.

Es importante saber que los nonces pueden proteger su sitio web, pero también debe comprender cómo implementarlos. Si bien ya están activos para las funciones predeterminadas de WordPress, es posible que deba implementarlos manualmente para sus temas y complementos.

Creando un Nonce

Para crear un nonce, deberá agregar una función al código de su sitio web. Todos los códigos de creación de nonce se colocan en el archivo functions.php . Para abrir este archivo, vaya a Apariencia > Editor de temas en su panel de control de WordPress. A la derecha, haz clic en functions.php para abrir el editor de archivos.

Los nonces se implementan por separado para URL, formularios y acciones. Para crear una acción nonce, agregue el siguiente código a este archivo:

 $nonce= wp_create_nonce('$action');

La sección "$action" del código debe ajustarse para reflejar la acción que desea que verifique el nonce. Un ejemplo sería usar la acción "eliminar publicación", que configura el nonce para verificar a los usuarios que intentan eliminar publicaciones.

Para crear un nonce para una URL, puede usar el siguiente código:

 $nonce= wp_nonce_url();

Dentro de los corchetes, deberá indicar los argumentos de la función. Esta es la URL simple y la cadena para las acciones del usuario. La cadena debe ser específica para un solo usuario, a fin de mejorar la seguridad del nonce.

Si desea crear un nonce para eliminar una cuenta de usuario, puede usar este fragmento:

 $nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);

WordPress predeterminará el nombre del nonce a "_wpnonce", pero puede actualizar esto agregando el nombre elegido al final de la cadena anterior.

Para crear un nonce para un formulario, incluya este código:

 $nonce= wp_nonce_field();

Entre paréntesis, deberá agregar una cadena para las acciones del usuario. Una vez hecho esto, la función crea dos campos ocultos en el formulario, el primero con el valor hash nonce. El segundo campo es la URL actual. La función final debería ser algo como esto:

 $nonce= wp_nonce_field('remove-comment_'.$comment_id);

Esta función nonce también tendrá el nombre nonce predeterminado de WordPress. Sin embargo, esto también es algo que puede modificar si lo prefiere.

Verificando un Nonce

Después de agregar un nonce a su sitio web de WordPress, es importante que lo verifique. Esto garantiza que el nonce funcione correctamente y mantenga su sitio web seguro.

Se utilizan diferentes métodos para verificar el nonce para URL y formularios. Para verificar una URL nonce, agregue el siguiente código al archivo functions.php :

 wp_verify_nonce($nonce, $action);

En esta función, ajuste "$nonce" al nombre del nonce que desea verificar, como "eliminar usuario". Luego, cambie la cadena "$acción" a la hora específica en que se crea el nonce. Cuando se ejecuta la función, devolverá "falso" si el nonce no es válido.

Si el nonce es válido, por otro lado, la función devolverá un 1 o un 2. Esto le indica la antigüedad del nonce. Un valor igual a 1 significa que el nonce se creó en las últimas 12 horas. Un valor igual a 2 significa que el nonce se creó hace más de 12 horas, pero hace menos de 24 horas.

Si ha agregado un nonce a un formulario, se requiere el siguiente código para verificarlo:

 check_admin_referer($action, $nonce);

Si el valor de nonce es válido, el formulario funcionará según lo previsto. Sin embargo, si el nonce no es válido, el navegador del usuario lo redirigirá a una página de error 403 Prohibido.

Cree experiencias digitales seguras en WP Engine

La seguridad es vital para un sitio web estable, y los nonces agregan una capa adicional de protección. Para implementarlos, todo lo que necesita hacer es agregar algo de código a su archivo functions.php . El código utilizado varía según el tipo de nonce que desee crear y la acción que desee proteger.

Si bien la creación e implementación de nonces mejora la seguridad del sitio, también se deben considerar otros protocolos de seguridad. Afortunadamente, la plataforma de alojamiento segura de WordPress de WP Engine ofrece algunos de los mejores recursos de seguridad para usuarios y desarrolladores. ¡Esto te deja más tiempo para concentrarte en perfeccionar tu sitio de WordPress!