Content-Security-Policy
est le nom d’un header HTTP dont le but est de restreindre les sources d’où peuvent être chargées les ressources utilisées par un site Web. Les ressources sont les scripts, les fichiers CSS, les images, les polices d’écriture… Ce header permet aussi de limiter le chargement de la page dans une frame/iframe. Le but est que le site utilise des ressources sûres. CSP a été développé pour réduire la surface des attaques par Cross-Site-Scripting (XSS) ou par Click Jacking. Ce mécanisme de sécurité est opéré par les navigateurs.
Les directives sont default-src, script-src, style-src, img-src, font-src, media-src, frame-src (liste non exhaustive).
Exemple « Starter policy » :
default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';base-uri 'self';form-action 'self'
Autre exemple :
Content-Security-Policy: default-src 'self'; img-src *; script-src js.example.com;
On peut définir ce que la page peut charger dans une frame avec la directive frame-src
. On peut définir les pages qui sont autorisées à charger notre page dans une frame avec la directive frame-ancestors
.
A noter qu’il est aussi possible d’appliquer les CSP en utilisant un meta tag.
Sources :