CSRF - Cross-Site Request Forgery explicado
Lectura de 2 min aprox.
El CSRF (Cross-Site Request Forgery, falsificación de petición en sitios cruzados) es un ataque en el que el atacante hace que un usuario envíe una petición maliciosa no intencionada a un servicio web en el que el usuario ya está autenticado. Como abusa de las credenciales (cookies) del servicio en el que el usuario tiene la sesión iniciada, la petición se procesa como si el propio usuario la hubiera realizado. Junto con el XSS, es uno de los ataques a aplicaciones web más representativos. A fecha de 2025, los principales frameworks (Django, Rails, Next.js) incorporan protección contra CSRF de forma predeterminada, pero se siguen reportando fallos de implementación en endpoints de API y en SPA.
Casos de uso reales
«Durante una evaluación de vulnerabilidades, descubrimos que la API de cambio de dirección de envío de un sitio de comercio electrónico no tenía implementada ninguna protección contra CSRF. Si un atacante preparaba una página trampa, podía cambiar la dirección de envío de un usuario con la sesión iniciada a cualquier dirección que quisiera.»
El flujo de un ataque CSRF
El mecanismo de un ataque CSRF
El atacante prepara una página web trampa y le inserta una petición dirigida a un servicio en el que el usuario tiene la sesión iniciada. Por ejemplo, si un usuario visita la página del atacante mientras sigue con la sesión iniciada en el sitio de un banco, el navegador envía automáticamente una petición de transferencia de dinero al sitio del banco. Como el navegador envía las cookies de forma automática, el sitio del banco no puede distinguir esa petición de una hecha por un usuario legítimo. libros de seguridad web (Amazon) te ayudarán a aprender los detalles del ataque.
Escenarios de daño reales
Hay casos en los que, estando con la sesión iniciada en un sitio de comercio electrónico, al hacer clic en un enlace colocado por un atacante la dirección de envío se cambia a la del atacante. También se han reportado daños en los que, al visitar una página trampa con la sesión iniciada en una red social, se realizan publicaciones o seguimientos no deseados. Cuando se combina con el secuestro de sesión, el daño se vuelve aún más grave. En la banca en línea, la protección contra CSRF en las operaciones de transferencia de dinero es especialmente importante.
Técnicas de defensa
Por parte del desarrollador, la medida estándar es insertar un token CSRF (un valor único y aleatorio) en los formularios y verificarlo cuando se realiza la petición. Configurar el atributo SameSite de las cookies permite restringir el envío de cookies entre sitios. Por parte del usuario, lo básico es adquirir el hábito de cerrar sesión tras las operaciones importantes y no hacer clic en enlaces sospechosos. Proteger tu cuenta con una contraseña aleatoria robusta y habilitar la autenticación multifactor puede mitigar el daño en caso de que ocurra lo peor. guías de desarrollo web seguro (Amazon) también son referencias útiles.
¿Te resultó útil este artículo?