Este tipo de ataque es bastante dañino ya que hace que un usuario que haya sido engañado pueda utilizar su autenticación para introducir datos en nuestra base de datos, imaginemos que con un ataque de este tipo se logre ingresar un usuario administrativo o tal vez una noticia falsa en nuestra sección de novedades.
¿Cómo Funciona el CSRF?
Como explicábamos este ataque engaña a nuestra aplicación para recibir datos que no provienen de ella misma, para ello se aprovecha de la forma en la que funcionan los protocolos como HTTP y sus diferentes métodos, con ello un atacante puede crear un formulario y apuntar a nuestro controlador.
Para ilustrar este ataque veamos el siguiente controlador que es vulnerable a este tipo de ataques:
Aquí podemos observar como obtenemos los datos directamente de nuestro formulario y esto no está mal, el único problema es que no le decimos a nuestra aplicación que debe validar el origen del mismo, con ello un atacante puede generar un script como el siguiente:
Aquí es claro lo que sucede, en la carga de esta página se envía el formulario que apunta a un registro en específico de la base de datos, este formulario apunta a un controlador válido, por lo que si un usuario autenticado es dirigido a esta página probablemente estemos en algunos aprietos.
¿Cómo Evitar este Ataque?
A pesar de lo fatalista que pueda verse, este ataque es evitable, para ello solo debemos hacer algunas validaciones que garanticen que los datos recibidos vienen de nuestra aplicación, para ello podemos emplear algunas de estas técnicas:
En el caso del token generado ASP.NET MVC contiene algunos métodos que nos pueden ayudar, el principal es @Html.AntiForgeryToken() el cual genera la clave secreta por la cual nuestra aplicación puede validar los formularios.
Vemos entonces que existen más áreas de las que pensamos y que debemos cuidar en nuestras aplicaciones, por ello debemos informarnos y estar al tanto de como ocurren los ataques para poder idear formas de evitarlos.