Las Server Actions de Next.js 16, sin autenticación adecuada, pueden abrir puertas a fallos de seguridad.

El truco

ANTES (mal):

// pages/api/handleForm.js
export default async function handleForm(req, res) {
  const { username, password } = req.body;
  // Procesa los datos sin verificar autenticación
  res.status(200).json({ message: 'Datos procesados' });
}

DESPUÉS (bien):

// pages/api/handleForm.js
import { getSession } from 'next-auth/client';

export default async function handleForm(req, res) {
  const session = await getSession({ req });

  if (!session) {
    return res.status(401).json({ error: 'No estás autenticado' });
  }

  const { username, password } = req.body;
  // Ahora procesa los datos con autenticación verificada
  res.status(200).json({ message: 'Datos procesados' });
}

Al implementar verificaciones de autenticación en tus Server Actions, aseguras que solo los usuarios autenticados puedan interactuar con determinadas rutas. Utilizando getSession de next-auth, puedes verificar de manera sencilla si una sesión existe antes de proceder. Esto añade una capa de seguridad que previene accesos no autorizados y potenciales fallos de seguridad.

No dejes tus Server Actions desprotegidas; usa autenticación para salvaguardar tus aplicaciones.