CSRF y mejores prácticas de seguridad

Next.js Seguridad CSRF

22 - 🧩 CSRF y mejores prácticas de seguridad

Aprende cómo proteger tu aplicación Next.js contra ataques CSRF y aplicar buenas prácticas de seguridad.


🔒 ¿Qué es CSRF?

CSRF (Cross-Site Request Forgery) es un ataque donde un sitio malicioso fuerza al navegador de un usuario autenticado a enviar solicitudes no deseadas a tu aplicación. Por ejemplo, un usuario logueado en tu app podría, sin querer, ejecutar acciones desde otro sitio.


🛡️ Prevención con tokens CSRF

Una de las formas más efectivas de protegerse es usar un token CSRF. Este token se genera en el servidor y se valida en cada solicitud que modifique datos.

import { randomBytes } from "crypto";
import { serialize } from "cookie";

// Generar token CSRF y guardarlo en cookie
export function setCSRFToken(res) {
  const token = randomBytes(32).toString("hex");
  const cookie = serialize("csrfToken", token, {
    httpOnly: true,
    secure: process.env.NODE_ENV === "production",
    sameSite: "strict",
    maxAge: 60 * 60, // 1 hora
    path: "/",
  });
  res.setHeader("Set-Cookie", cookie);
  return token;
}

// Validar token en requests
export function validateCSRF(req) {
  const cookies = parse(req.headers.cookie || "");
  const csrfToken = cookies.csrfToken;
  const requestToken = req.headers["x-csrf-token"];
  return csrfToken && requestToken && csrfToken === requestToken;
}
      

💡 Explicación:

  • El token se guarda en cookie httpOnly para seguridad.
  • Se envía en encabezado x-csrf-token con cada request que modifique datos.
  • Se compara el token enviado con el token en la cookie para validar la petición.

⚡ Mejores prácticas de seguridad en Next.js

  • 🔑 Usar HTTPS en producción para cifrado de datos en tránsito.
  • 🍪 Configurar cookies con httpOnly, secure y sameSite.
  • 🛡️ Implementar autenticación robusta (NextAuth.js, JWT, OAuth).
  • 🔒 Validar todas las entradas del usuario para prevenir inyecciones.
  • 🚫 Evitar exponer información sensible en el cliente.
  • 🧩 Proteger rutas críticas con middleware y validación de tokens.
  • 📦 Mantener dependencias actualizadas para reducir vulnerabilidades.

✅ Resumen

  • CSRF permite ataques desde otros sitios aprovechando la sesión activa del usuario.
  • Usar tokens CSRF y cookies seguras reduce significativamente el riesgo.
  • Aplicar buenas prácticas de seguridad garantiza una app más confiable y robusta.

Publicar un comentario

0 Comentarios