Dotclear

Ticket #1867 (closed task: fixed)

Opened 12 years ago

Last modified 5 years ago

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:1 Changed 11 years ago by franck

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.

comment:2 Changed 9 years ago by franck

  • Milestone changed from A definir to 2.10

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 :

Last edited 9 years ago by franck (previous) (diff)

comment:5 Changed 9 years ago by franck

  • Milestone changed from 2.10 to 2.11

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:14 Changed 8 years ago by franck

  • Milestone changed from 2.12 to 2.13

comment:15 Changed 8 years ago by franck

  • Milestone changed from 2.13 to A definir

comment:16 Changed 8 years ago by franck

  • Milestone A definir deleted

comment:17 Changed 8 years ago by franck

  • Type changed from defect to task

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.

Note: See TracTickets for help on using tickets.

Sites map