J'ajoute actuellement l'en-tête Content Security Policy (CSP) à notre application. Je me demande à quels fichiers l'en-tête doit être attaché. Après quelques recherches, je n'ai pas trouvé de réponse claire.
Twitter, par exemple l'a ajouté uniquement au document HTML réel. Facebook l'a cependant ajouté à presque toutes les ressources et au document HTML (HTML, JS, CSS, etc.).
Alors, est-il nécessaire d'ajouter l'en-tête de la stratégie de sécurité du contenu à chaque fichier de ressources servi ou uniquement au document HTML? Comment ça marche avec les requêtes Ajax (contenu JSON)? Comment cela fonctionne-t-il avec les SPA (seul le index.html
fichier ou toutes les ressources)? Je ne veux pas ralentir la page en ajoutant de longs en-têtes CSP à chaque fichier si cela n'est pas nécessaire du point de vue de la sécurité.
MODIFIER:
Pour clarifier: le navigateur traite-t-il les images ou autres ressources non documentaires différemment lorsqu'elles sont accompagnées d'un en-tête CSP?
Les navigateurs qui prennent en charge en-tête de réponse de la politique de sécurité du contenu HTTP empêcheront le chargement des images (et d'autres contenus) pour toute page où l'en-tête de réponse ou une balise META contient des directives de politique de sécurité du contenu qui limitent les domaines considérés comme valides les sources de contenu, nécessitent que tout le contenu soit chargé via HTTPS, etc. les navigateurs modernes les plus répandus prennent en charge la politique de sécurité du conten et l'appliquent pour contrôler la majorité des ressources de contenu (y compris les images) associées à toute demande HTTP ( sauf que le contrôle des ressources des employés Web n'est pas pris en charge dans Safari et IE et peut ne pas être pris en charge dans Edge ou Opera).
Vous pouvez spécifiquement inclure img-src
directives de stratégie dans votre stratégie de sécurité du contenu pour restreindre les domaines considérés comme des sources valides pour les images et nécessiter le schéma HTTPS, etc. Il existe également des directives spécifiques disponibles pour une variété d'autres ressources, notamment les polices, les cadres, les médias (audio, vidéo, etc.), scripts, feuilles de style, employés Web, etc.
Vous devrez soit inclure votre politique de sécurité du contenu dans le cadre de l'en-tête de réponse HTTP renvoyé par votre serveur Web dans le cadre de chaque demande HTTP où vous souhaitez limiter les sources de contenu valides, soit vous assurer que la page demandée comprend une méta de politique de sécurité du contenu tag comme ...
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
Notez que IE 10+ navigateurs prennent en charge les en-têtes de réponse de la politique de sécurité du contenu, mais pas les balises META (vous devez également prendre en compte certains détails d'implémentation si vous souhaitez prendre en charge IE).
ralentir la page en ajoutant de longs en-têtes CSP à chaque fichier
Soi-disant, avec 4 non modifié état - les en-têtes CSP ne sont pas envoyés
- uniquement lors du chargement initial