PROJET AUTOBLOG


le hollandais volant links

Site original : le hollandais volant links

⇐ retour index

CSP Header Inspector and Validator

vendredi 24 janvier 2020 à 16:29

Dans la même veine que le lien précédent…

Les en-têtes CSP (content security policy : https://developer.mozilla.org/fr/docs/Web/HTTP/CSP ) permettent de spécifier quels contenus peuvent s’afficher/s’éxécuter dans votre machine.

Pour vulgariser à l’extrême (ne faites pas ça), ça permettrait à n’importe qui de poster du JS ou du CSS valide dans vos pages (par exemple dans un commentaire) et ce dernier sera bloqué si les en-têtes interdisent le JS inline, ou le CSS inline.
(faut pas le faire car tous les navigateurs ne supportent pas et il faut partir du principe que le navigateur du visiteur (voire le vôtre) n’a pas forcément ça d’activé).

Si j’ajoute cette en-tête CSP à une page :

default-src 'self'; img-src 'self' data:; script-src 'self' 'unsafe-inline'; form-action 'self';

Cela autorisera par liste blanche :
– le contenu peu importe son type (default-src) en provenance de votre domaine ('self') seulement
– les images (img-src) en provenance de votre domaine (self), des liens data-uri (data:)
– les scripts (script-src) en provenance de votre domaine (self), ainsi que les script inline (unsafe-inline)
– les POST de formulaires (form-action) en provenance de votre domaine (self)

Tout le reste sera inutile, bloqué.

Avec ces règles, si vous mettez une image "src=https://example.com", alors l’image ne chargera pas : bloqué par les règles CSP : seule une image sur votre site, et une image avec data-uri peuvent s’afficher.

Dans les outils de dév de Firefox, vous verrez afficher une alerte relative à CSP.

Le lien que je donne ici permet de tester vos règles CSP (copiez-y mon code ci-dessus, pour tester). Il décortique également tout ça pour y voir clair.

Enfin, si vous utilisez Apache, voilà comment on ajoute une entête dans un .htaccess :

# Extra Security Headers
<IfModule mod_headers.c>
	Header set Content-Security-Policy "<regle csp>" 
</IfModule>

Remplacez <regle csp> par votre règle, virez les « <> », mais laissez les quotes.

Comme ça :

# Extra Security Headers
<IfModule mod_headers.c>
	Header set X-Content-Type-Options nosniff
	Header set Content-Security-Policy "default-src 'self'; img-src 'self' data:; script-src 'self' 'unsafe-inline'; form-action 'self';"
</IfModule>

— (permalink)