Comment configurer une Politique de Sécurité du Contenu (CSP) pour votre application Next.js
La Politique de Sécurité du Contenu (CSP) est importante pour protéger votre application Next.js contre diverses menaces de sécurité telles que le cross-site scripting (XSS), le clickjacking et d'autres attaques par injection de code.
En utilisant CSP, les développeurs peuvent spécifier quelles origines sont autorisées pour les sources de contenu, scripts, feuilles de style, images, polices, objets, médias (audio, vidéo), iframes et plus encore.
Exemples
Nonces
Un nonce est une chaîne de caractères unique et aléatoire créée pour une utilisation unique. Il est utilisé conjointement avec CSP pour autoriser sélectivement certains scripts ou styles inline à s'exécuter, contournant ainsi les directives strictes de CSP.
Pourquoi utiliser un nonce ?
Même si les CSP sont conçus pour bloquer les scripts malveillants, il existe des scénarios légitimes où des scripts inline sont nécessaires. Dans ces cas, les nonces offrent un moyen d'autoriser ces scripts à s'exécuter s'ils possèdent le nonce correct.
Ajout d'un nonce avec Middleware
Le Middleware vous permet d'ajouter des en-têtes et de générer des nonces avant le rendu de la page.
À chaque affichage d'une page, un nouveau nonce doit être généré. Cela signifie que vous devez utiliser le rendu dynamique pour ajouter des nonces.
Par exemple :
Par défaut, le Middleware s'exécute sur toutes les requêtes. Vous pouvez filtrer le Middleware pour qu'il s'exécute sur des chemins spécifiques en utilisant un matcher
.
Nous recommandons d'ignorer les préchargements (depuis next/link
) et les ressources statiques qui n'ont pas besoin de l'en-tête CSP.
Lecture du nonce
Vous pouvez fournir le nonce à votre page en utilisant
getServerSideProps
:
Sans Nonces
Pour les applications qui ne nécessitent pas de nonces, vous pouvez définir l'en-tête CSP directement dans votre fichier next.config.js
:
Historique des versions
Nous recommandons d'utiliser Next.js v13.4.20+
pour gérer et appliquer correctement les nonces.