¿Qué es CSRF?
CSRF (Falsificación de Solicitud en Sitios Cruzados) es un tipo de ataque en el que un atacante engaña a un usuario para que realice acciones no deseadas en una aplicación web en la que ya está autenticado.
¿Cómo funciona?
- El usuario está autenticado: El usuario ha iniciado sesión en una aplicación web (por ejemplo, su banco).
- El atacante engaña al usuario: El atacante crea un enlace o un formulario malicioso y lo envía al usuario (por ejemplo, a través de un correo electrónico o un sitio web).
- El usuario realiza la acción sin saberlo: Si el usuario hace clic en el enlace o visita el sitio malicioso, se envía una solicitud a la aplicación web en su nombre, sin su consentimiento.
Ejemplo Práctico
- Escenario: El usuario está autenticado en su banco.
- Ataque: El atacante envía un enlace malicioso que parece inofensivo:
<a href="https://tubanco.com/transferir?monto=1000&destinatario=atacante">¡Gana un premio!</a> - Resultado: Si el usuario hace clic, se realiza una transferencia de $1000 a la cuenta del atacante.
¿Por qué es peligroso?
- Acciones no autorizadas: El atacante puede realizar acciones en nombre del usuario, como transferencias, cambios de contraseña, etc.
- Invisible para el usuario: El usuario no se da cuenta de que se ha realizado una acción en su nombre.
¿Cómo prevenir CSRF?
-
Tokens CSRF:
- La aplicación web genera un token único para cada sesión.
- Este token se incluye en los formularios y se verifica en el servidor antes de procesar la solicitud.
-
SameSite Cookies:
- Configura las cookies con el atributo
SameSitepara evitar que se envíen en solicitudes cruzadas.
- Configura las cookies con el atributo
-
Verificación del Origen:
- Asegúrate de que las solicitudes provengan del mismo sitio web.
Resumen
- CSRF: Ataque donde el usuario realiza acciones no deseadas en una aplicación web autenticada.
- Prevención: Usa tokens CSRF, cookies
SameSitey verifica el origen de las solicitudes.
Diagrama de CSRF
sequenceDiagram participant Usuario participant Atacante participant AplicaciónWeb Usuario->>AplicaciónWeb: Inicia sesión Atacante->>Usuario: Envía enlace/formulario malicioso Usuario->>AplicaciónWeb: Realiza acción no deseada (sin saberlo) AplicaciónWeb->>Atacante: Acción completada (ej: transferencia)