Junior
¿Qué es CSRF?
sobes.tech AI
Respuesta de la IA
CSRF (Cross-Site Request Forgery) — es un tipo de ataque en el que un atacante hace que el usuario realice acciones no deseadas en un sitio web donde ya está autenticado.
La esencia del ataque radica en que un sitio malicioso o un correo contiene una solicitud que el navegador del usuario envía automáticamente al sitio objetivo. Si el usuario ha iniciado sesión en el sitio objetivo, su navegador enviará cookies, y la solicitud se ejecutará con sus permisos.
Por ejemplo, esto puede ser una solicitud para cambiar la contraseña, transferir dinero o eliminar una cuenta.
Para protegerse contra CSRF, se utilizan varios métodos:
- Tokens CSRF: Tokens secretos y únicos para cada solicitud, que se generan en el servidor y se envían con cada formulario o solicitud AJAX. El servidor verifica la coincidencia del token recibido.
- Atributo SameSite en cookies: Establece una regla en la que las cookies solo se envían al servidor en solicitudes del mismo dominio donde se establecieron.
- Verificación de encabezados Origin y Referer: El servidor verifica de dónde proviene la solicitud. Sin embargo, estos encabezados pueden ser modificados por un atacante o no estar presentes en algunos casos.
- Requiere re-autenticación para acciones críticas: Solicitar la contraseña antes de realizar operaciones importantes.
El método más efectivo y común es el uso de tokens CSRF.
// Ejemplo de cómo agregar un token CSRF en un formulario
<form action="/transfer" method="POST">
<input type="hidden" name="_csrf_token" value="token_generado_por_el_servidor">
<input type="number" name="amount">
<button type="submit">Transferir</button>
</form>
// Ejemplo de verificación del token CSRF en el servidor (Node.js con Express)
app.post('/transfer', csrfProtection, (req, res) => {
// Procesamiento de la solicitud después de verificar el token con éxito
});