Jhon Jairo Rincón Cardona

El gran libro de desarrollo de plugins WordPress


Скачать книгу

de cómo funciona el método sanitize_text_field()

Illustration

      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.

Illustration

      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:

Illustration

      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.

Illustration

      Vemos cómo me devuelve solo los caracteres admitidos.

      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:

Illustration

      _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:

Illustration

      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.

Illustration

      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:

Illustration

       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.

Illustration

       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().

Illustration

      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:

Illustration

      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í: