Cargando



Construir token CSRF con Laravel

Pasos para saber construir un token CSRF en nuestra aplicación desarrollada con Laravel.


oct 31 2014 04:02
Avanzado
nov 06 2014 10:31
Las aplicaciones modernas tienen un riesgo y es que cualquier persona puede hacer un formulario y enviarlo a nuestras direcciones, esto hace que podamos recibir información no deseada de fuentes externas.

Para evitar esto hay varios métodos, uno de los principales es construir un token que nos ayude a saber el origen de las peticiones que nuestros servicios reciben, de esta manera aseguramos que sea una petición legitima y no una forjada.

En este caso vamos a crear un token CSRF, es decir, un token para evitar el Cross-Site Request Forgery que no es más que una petición que se hace pasar como si fuera de nuestro sitio para confundir a nuestra aplicación, esto es muy común que suceda, por lo que con una comprobación podemos reducir el riesgo de forma considerable, frameworks como Django en Python lo incorporan de forma nativa y Laravel también tiene su implementación.

Requisitos
Solo necesitaremos una instalación estándar de Laravel, adicionalmente también debemos saber cómo construir vistas, de resto aprenderemos aquí lo necesario.


¿Qué hacer?


1- Primero debemos crear una ruta en la cual vamos a alojar una vista que va a generar un token, este va a ser el que utilizaremos luego para poder verificar la procedencia de la petición, para ello vamos a incluir el método token() de la clase Session.

Para ello en el método GET de la ruta creamos el token y en el método POST de la misma hacemos la comprobación, veamos en la siguiente imagen como debe lucir nuestro código:

laravel-construir-token-crsf.jpg


2- Ahora en nuestro siguiente paso vamos a crear un filtro que efectivamente va a hacer la comparación de nuestro token que recién creamos, en este caso vamos al archivo filters.php y vamos a comparar el token de la sesión del usuario con el que se imprime en el formulario, si hay coincidencia el filtro es positivo, si no se niega la acción.

Vamos a lanzar una excepción en caso que no exista la coincidencia del token. Veamos cómo queda el código para el archivo en cuestión:



laravel-construir-token-crsf2.jpg


3- Finalmente construimos la vista, en ella vamos a crear un campo utilizando la clase Form y un método llamado token(), este va a crear un campo oculto con el valor de nuestro token, este es el que va a tomar nuestro filtro al momento de hacer el envío por POST.

Entonces en nuestra aplicación vamos a generar un archivo llamado csrf.php en la carpeta views, para ello vamos a crear un formulario y agregar algunos campos incluyendo el que mencionamos anteriormente que conllevará el token:



laravel-construir-token-crsf3.jpg


Ya con esto cuando visitemos en nuestra aplicación la vista csrf.php veremos que podemos enviar datos con nuestro formulario, sin embargo si intentamos enviar un formulario fuera de nuestra aplicación a la misma vista vía POST obtendremos una excepción, impidiendo así que se inserten datos erróneos.

Con esto finalizamos este tutorial, a pesar que esto conlleva un poco más de trabajo es altamente recomendable crear tokens de seguridad, ya que con ello evitaremos que nuestra seguridad pueda ser vulnerada.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X