Seguridad en los formularios de wordpress utilizando nonce

 

Hola a todos:

Hoy vamos a ver la manera de añadir más seguridad a nuestros formularios en wordpress utilizando la técnica nonce.

Cuando tenemos un formulario público donde los usuarios pueden enviar datos siempre es una puerta de entrada  susceptible a ser manipulada maliciosamente.

La palabra “nonce” viene de number use once, es decir número utilizado una sola vez.

Esto nos ofrece una seguridad extra a nuestros formularios ya que entre otras cosas permite verificar el origen de la petición y evitar que los datos enviados sean manipulados maliciosamente.

Esta técnica se puede utilizar  en cualquier lenguaje de programación, wordpress nos facilita esta tarea ofreciéndonos la función wp_create_nonce(), que nos generará un número aleatorio que después nos permitirá validar que la petición viene desde nuestro formulario y desde ningún otro sitio.

Para realizar esta validación utilizamos la función de wordpress wp_verify_nonce().

Veamos con un ejemplo la forma de utilizar nonce:

En primer lugar en nuestro formulario añadiremos un campo oculto que contendrá el valor de nonce generado con la función wp_create_nonce().

<form action="" method="post">
<?php // Generamos el nonce ?>
<?php $nonce = wp_create_nonce( 'miformulario' ); ?>
<input type="hidden" name="_wpnonce" value="<?php echo "{$nonce}"; ?>"/>
Nombre:<input tytpe="text" name="nombre" />
<!-- //  mas campos de mi formulario -->
......
......
</form>

 

Como parametro la funcion wp_create_nonce recible una cadena de caracteres que luego debemos utilizar para verificar el nonce. Yo en este caso le he llamado ‘miformulario’.

Ahora en la parte donde recojas los datos recividos desde el formulario verificamos que el nonce es correcto:

<?php
$nonce = $_REQUEST['_wpnonce'];
if ( ! wp_verify_nonce( $nonce, 'miformulario' ) ){
  wp_die( 'nonce no válido' );
}
// Si el nonce es correcto seguimos recogiendo el resto de campos
$nombre = $_POST['nombre'];
//  ...... resto de campos
?>

De esta manera si detecta  que el nonce no es correcto se parara la ejecución mostrando un mensaje de aviso y evitaremos que se ejecute nada indeseado.

Con estos sencillos pasos aportaremos un poco más de seguridad a nuestros formularios en wordpress.

¿Necesitas un presupuesto para un desarrollo WordPress a medida?

¿Quieres un plugin a medida que realice una funcionalidad concreta que necesitas para tu WordPress?

Solicita un presupuesto sin compromiso:

Un saludo, y si aún no lo has hecho no olvides suscribirte a mi blog para no perderte los próximos posts  :-),

También puedes seguirme en Twitter en ‎@revigames y no olvides que me ayudas mucho si compartes este post en las redes sociales.

2 comentarios en “Seguridad en los formularios de wordpress utilizando nonce

  1. En mi sitio tengo botones de pago stripe, pero a veces al dar click me aparece el mensaje de “la cookie nonce no es válida”, así que mis clientes no pueden realizar pagos. Qué sucede? cómo arreglo ese error?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.