Ticket #1867 (closed task: fixed)
Implement CSP on public and admin
Reported by: | bruno | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | module:core | Version: | 2.6 |
Severity: | normal | Keywords: | |
Cc: |
Description
cf. http://www.geeek.org/content-security-policy-failles-xss-895.html
Add content security policy to any dc page.
Change History
comment:3 Changed 9 years ago by franck
À prévoir :
- mode "adaptatif" via behaviour(s) pour que les plugins/thèmes puissent ajouter des éléments aux clauses
- mode "reporting only" → fichier/db pour identifier les violations
- application côté Admin et côté Public (les clauses seront probablement différentes)
comment:4 Changed 9 years ago by franck
Quelques infos/outils sur le sujet, par Nicolas Hoffmann qui a présenté une conf' à Paris-Web 2015 sur ce sujet :
comment:6 Changed 9 years ago by franck <carnet.franck.paul@…>
(In [78fe7ff87661]) First step of CSP integration, admin only up to now ; addresses #1867
comment:7 Changed 9 years ago by franck <carnet.franck.paul@…>
(In [86dfd06c2a8c]) Better this way for CSP directive, 3rd party plugins may use adminPageHTTPHeaderCSP behavior to fulfill directives / addresses #1867
comment:8 Changed 9 years ago by franck
L'implémentation côté admin est faite dans la 2.10 (et suivantes de cette branche).
Il reste cependant la question des iframe utilisées par les éditeurs pour afficher en mode WYSIWYG du contenu qui peut être externe. Ça sera à revoir lors de l'implémentation côté public où il faudra, côté iframe, reprendre ce qui est prévu côté public du blog. Une autre solution, moins secure, est de laisser tous les contenus visibles dans ces cas-là.
comment:9 Changed 9 years ago by franck
Côté public, il va falloir prévoir une page d'administration qui permettent de récupérer le reporting et de proposer les règles idoines pour la partie publique du blog, pas tout à fait trivial.
On fera ça pour la 2.11 si on a le temps, sinon pour la 2.12
comment:10 Changed 9 years ago by franck
On va commencer par générer le reporting / blog dans le répertoire var, au moins qu'il serve à quelque chose maintenant qu'il existe !
Donc quelque chose comme /var/csp/<blog>/report.json
D'ailleurs le report CSP côté admin se fait dans /cache/csp_report.json, on va peut-être le déplacer dans /var/csp/ au passage…
comment:11 Changed 9 years ago by franck <carnet.franck.paul@…>
(In [b4e6ee6b9851]) Add a comma (,) after each JSON encoded CSP report data, addresses #1867
comment:12 Changed 9 years ago by franck <carnet.franck.paul@…>
(In [0dab0a0d4621]) Do not store repeated violation in CSP report data, addresses #1867
comment:13 Changed 9 years ago by franck
- Milestone changed from 2.11 to 2.12
J'ai ouvert ce qu'il fallait pour permettre le développement d'un plugin indépendant, histoire de développer ça tranquillement et ne pas bloquer le reste.
Ça va demander un peu de travail pour proposer quelque chose de pas trop complexe et d'exploitable côté administration afin d'activer les règles CSP correctes et suffisantes côté public.
On verra d'ici la 2.12 si quelque chose de potable aura abouti.
comment:18 Changed 5 years ago by franck
- Status changed from new to closed
- Resolution set to fixed
C'est l'arlésienne ce truc et c'est déjà assez pénible à gérer/régler côté admin.
On va faire l'impasse côté public, pour l'instant.
Côté public, va falloir se méfier avec les scripts externes (Google et consort), les CSS/média stockés ailleurs, …
Côté admin, faut voir côté preview et éventuellement au sein des éditeurs…
On pourrait d'emblée mettre un Content-Security-Policy : default-src 'self', mais ça va coincer dans certains cas.