Cómo configurar una Política de Seguridad de Contenido (CSP) para tu aplicación Next.js
La Política de Seguridad de Contenido (CSP) es importante para proteger tu aplicación Next.js contra diversas amenazas de seguridad como cross-site scripting (XSS), clickjacking y otros ataques de inyección de código.
Al usar CSP, los desarrolladores pueden especificar qué orígenes son permitidos para fuentes de contenido, scripts, hojas de estilo, imágenes, fuentes, objetos, medios (audio, video), iframes y más.
Ejemplos
Nonces
Un nonce es una cadena única y aleatoria de caracteres creada para un uso único. Se utiliza junto con CSP para permitir selectivamente que ciertos scripts o estilos en línea se ejecuten, evitando las directivas estrictas de CSP.
¿Por qué usar un nonce?
Aunque las CSP están diseñadas para bloquear scripts maliciosos, hay escenarios legítimos donde los scripts en línea son necesarios. En tales casos, los nonces ofrecen una forma de permitir que estos scripts se ejecuten si tienen el nonce correcto.
Agregar un nonce con Middleware
Middleware te permite agregar encabezados y generar nonces antes de que la página se renderice.
Cada vez que se visualiza una página, se debe generar un nuevo nonce. Esto significa que debes usar renderizado dinámico para agregar nonces.
Por ejemplo:
Por defecto, Middleware se ejecuta en todas las solicitudes. Puedes filtrar Middleware para que se ejecute en rutas específicas usando un matcher
.
Recomendamos ignorar las coincidencias de prefetch (de next/link
) y los recursos estáticos que no necesitan el encabezado CSP.
Leyendo el nonce
Puedes proporcionar el nonce a tu página usando
getServerSideProps
:
Sin Nonces
Para aplicaciones que no requieren nonces, puedes configurar el encabezado CSP directamente en tu archivo next.config.js
:
Historial de versiones
Recomendamos usar v13.4.20+
de Next.js para manejar y aplicar correctamente los nonces.