Crear Captcha
Todo lo que está en internet está expuesto a algún tipo de ataque o de algún uso malicioso, un caso que sucede mucho es el de los robots que hacen múltiples peticiones a los formularios, esto genera varios inconvenientes, el primero es que recibimos datos no deseados en una cantidad masiva y el segundo es que se nos consumen los recursos, si hay muchas peticiones por segundo inclusive puede caer nuestro servicio.
Existen muchos complementos en el mercado para lograr esto, sin embargo podemos lograrlo desde 0 utilizando solo Laravel.
Construir la Clase Captcha
Lo primero que haremos será construir la clase Captcha, esta lo que hará es generar una imagen con letras y números aleatorios que solo podrán ser leídos por un ser humano y no por un robot.
Para lograr esto vamos a ubicarnos en el directorio app/libraries de nuestra aplicación Laravel, ahí crearemos un archivo llamado Captcha.php, este será el contenedor de nuestra clase, dicha clase solo contendrá un método llamado make() que es quien se encargará de generar la imagen, veamos el siguiente ejemplo:
Actualizar el Composer
Ahora que ya tenemos nuestra clase creada debemos actualizar nuestro archivo composer.json, de esta forma nuestra aplicación podrá cargar por defecto nuestra nueva clase y así podremos utilizarla en cualquier parte que necesitemos.
Para ello en nuestro archivo composer.json vamos a incluir la línea app/libraries como vemos en el ejemplo:
Una vez actualizado el archivo ahora debemos hacer que la aplicación tome los cambios y recargue la configuración, para ello podemos correr el siguiente comando en la consola de Laravel:
php composer.phar dump-autoloadYa con esto podremos utilizar nuestra clase Captcha que acabamos de construir.
Aplicación del Captcha
Ya que hemos realizado todo lo que requerimos, ahora si podemos empezar a utilizar nuestro nuevo componente, para ello debemos hacer un formulario y en la ruta debemos crear además una variable que puede contener a la imagen, así la tendremos disponible.
Dentro de nuestra vista debemos imprimir la imagen y colocar un campo donde se pueda colocar el texto aleatorio y finalmente en el método POST de nuestro formulario debemos validar que si el texto corresponde con el generado dejemos pasar el contenido si no debemos retornar a la vista del formulario y cambiar la imagen.
Si todo resulta de forma exitosa, los robots intentarán hacer envió de datos en nuestro formulario, pero como no tendrán una respuesta satisfactoria entonces desistirán y pasaran a un nuevo objetivo, ahorrándonos así dolores de cabeza y la recepción de datos spam.
Como vemos el proceso de generación del captcha y su implementación es bastante simple, lo que puede ser un poco más complejo son las validaciones, debemos entonces preocuparnos más por tener a tono el proceso ya que las herramientas son más fácil de poner en marcha que corregir una lógica defectuosa.