Estamos inyectando código sql dentro del mensaje. Lo que hace la función de sanitización es eliminar este código. Si vamos a nuestro frontend y observamos en la consola, veremos que lo elimina.
Ejemplo 2
Ahora vamos a realizar un ejemplo con el método sanitize_email(), el cual podemos utilizar por ejemplo cuando recibimos en un formulario el mail de algún usuario.
Para ello, vamos a nuestro archivo principal de nuestro plugin res-pruebas. php y escribimos el siguiente código:
Observemos que estamos introduciendo un email con espacios y caracteres que no se pueden admitir en un correo normal, ahora lo pasamos por el método de sanitización y revisamos nuestro frontend.
Vemos cómo me devuelve solo los caracteres admitidos.
Nonces I
Generalidades
El término «nonce» es la abreviación en inglés de «number used once», o número usado una vez. En WordPress los nonces son cadenas de texto que parecen ser cadenas aleatorias, pero en realidad no lo son, pues son generadas a través de funciones hash.
Una función criptográfica hash (usualmente conocida como “hash”) es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud.
Nonces en WordPress
Si vemos el código de los enlaces o código de los formularios de WordPress, podemos detectar alguna de estas cadenas de seguridad.
Nonces en URL
Por ejemplo, cuando queremos eliminar una entrada, veremos una url como se muestra en la siguiente imagen:
_wpnonce es el parámetro por defecto que usa WordPress para el nonce en la url.
Nonces en formularios
Por ejemplo, al crear una nueva entrada, aparece el formulario con los diferentes campos para llenar, pero también aparecen campos ocultos. Lo podemos ver con el Inspector de Código, tal como se muestra en la siguiente imagen:
Vemos que el nombre del input es _wpnonce es el nombre por defecto que usa WordPress para el nonce.
Proteger a los usuarios de ellos mismos
Imagínese que un usuario tiene permisos de administrador y está logueado en su WordPress, él no tiene pensado borrar ninguna entrada. Sin embargo, ¿qué sucede si le envío por correo un enlace con la url para eliminar una entrada? Si el usuario pulsa mi enlace, lo estaré forzando a realizar el borrado de alguna entrada.
Este tipo de ataque es parte de los ataques conocidos como CSRF (Cross Site Request Forgery).
Si el usuario ejecuta alguna acción forzada sin tener un nonce válido, WordPress mostrará la siguiente pantalla por defecto y sin opción a nada.
Creando Nonces en el desarrollo de plugins
Por todo lo anteriormente expuesto, cuando desarrollamos plugins, hay que tener presente el uso de nonces. A continuación, veremos algunos escenarios más comunes:
Nonces en URL
Para agregar un nonce en la url, usamos la función wp_nonce_url(), por ejemplo:
En el código anterior:
• Nuestro nonce se generará a partir del texto «ejemplo-nonce».
• Tendrá como nombre «nonce» (en lugar del nombre por defecto _wpnonce).
Nonces en formulario
En este caso usaremos la función wp_nonce_field(), que creará el campo oculto con el valor del nonce.
En el código anterior:
• Nuestro nonce se generará a partir del texto «ejemplo-nonce».
• tendrá como nombre de campo «nonce» (en lugar del nombre por defecto _wpnonce).
Nonces usando ajax
Para usar nonces con ajax, tenemos que crear el nonce y pasarlo al archivo javascript a través de la función wp_localize_script(). Para la creación del nonce usaremos wp_create_nonce().
Comprobando validez de Nonces en el desarrollo de plugins
Para personalizar el mensaje que se muestra cuando hay un error de nonce, puede usar la función wp_verify_nonce(). El código sería similar al siguiente:
Este código funcionará en todos los casos, para nonces en url, formulario y ajax.
IMPORTANTE:
Los nonces cambian cada 12 horas y es válido por 24 horas (es decir, el nonce actual tiene un período de expiración de 24 horas, pero ese código generado se repetirá solo por 12 horas, y luego cambiará por otro, siendo válidos los 2 en su período de tiempo).
Ejemplos
Ejemplo 1
En este ejemplo veremos cómo insertar un nonce en una url. Para ello, vamos a configurar primero nuestros enlaces y vamos a nuestro panel de administración de WordPress, y en ajustes->enlaces permanentes vamos a clicar la opción nombre de la entrada y hacemos clic en guardar cambios.
Ahora vamos al archivo functions.php de nuestra plantilla restaurante, la ruta es:
C:\wamp64\www\_curso02\wp-content\themes\atr_theme
Aquí encontraremos el archivo functions.php y dentro de este archivo crearemos una variable donde guardaremos la ruta de algún post de nuestra web restaurante. A continuación, con la función wp_nonce_url() pasaremos el nonce de seguridad.
El código seria así: