etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
184 stars 28 forks source link

Content Security Policy : ajout directive frame ancestors #3953

Closed AntoineAugusti closed 1 month ago

AntoineAugusti commented 1 month ago

Fixes https://github.com/etalab/transport-deploy/issues/74

Améliore notre CSP en indiquant que le PAN ne peut pas être mis dans une iframe. Voir OWASP - Clickjacking defense.

Nous avions déjà x-frame-options: sameorigin dans notre codebase pour toutes nos réponses. https://github.com/etalab/transport-site/blob/22162d63b100d9a1efd940096fef8613de307555/apps/transport/test/transport_web/routing/headers_and_cookies_test.exs#L12

J'adapte en passant à DENY, on ne met pas d'iframe de notre propre site.

thbar commented 1 month ago

GG ! Je propose de déployer sur prochainement et vérifier ce que ça donne là bas, vu qu'on peut avoir des surprises sur ce genre de choses.

thbar commented 1 month ago

(j'ai lancé le déploiement d'ailleurs, pour ne pas perdre de temps)

AntoineAugusti commented 1 month ago
$ curl -q -I https://prochainement.transport.data.gouv.fr | grep "security-policy"
content-security-policy: default-src 'none';  connect-src *;  font-src *;  frame-ancestors 'none';  img-src 'self' data: https://api.mapbox.com https://static.data.gouv.fr https://demo-static.data.gouv.fr https://www.data.gouv.fr https://demo.data.gouv.fr https://*.dmcdn.net https://transport-data-gouv-fr-logos-staging.cellar-c2.services.clever-cloud.com;  script-src 'self' 'unsafe-eval' 'unsafe-inline' https://stats.data.gouv.fr/matomo.js;  frame-src https://www.dailymotion.com/;  style-src 'self' 'nonce-OTkZYo_gnPM5oA' 'sha256-9uoGUaZm3j6W7+Fh2wfvjI8P7zXcclRw5tVUu3qKZa0=' 'sha256-MmUum7+PiN7Rz79EUMm0OmUFWjCx6NZ97rdjoIbTnAg=';  report-uri https://o1140487.ingest.sentry.io/api/6197733/security/?sentry_key=ee95fa9a50c747ec93b1467ed9377251&sentry_environment=staging

C'est bien pris en compte

image

thbar commented 1 month ago

J'ai relancé un petit diagnostic à côté, je mettrai des notes dans le ticket privé plus tard, ça me semble bon !