No cometas este error de seguridad en Next.js 16
Implementa un control de autenticación en las Server Actions para evitar brechas de seguridad.
Las Server Actions en Next.js 16 pueden ser un vector de ataque si no implementas un control de autenticación adecuado.
El truco
ANTES (mal):
export async function serverAction(req) {
const data = await fetchData(req);
return data;
}
DESPUÉS (bien):
import { getSession } from 'next-auth/client';
export async function serverAction(req) {
const session = await getSession({ req });
if (!session) {
throw new Error('No autorizado');
}
const data = await fetchData(req);
return data;
}
La diferencia crucial está en la validación de la sesión del usuario. Sin comprobar si el usuario está autenticado, tu acción del servidor es vulnerable a ser explotada por cualquier usuario no autenticado. Utiliza next-auth para verificar la sesión antes de proceder con cualquier lógica del servidor.
No subestimes las verificaciones de autenticación; son la primera línea de defensa contra accesos no autorizados en tus aplicaciones.