Il y a une phase que j’aime bien, quand je développe, c’est la partie conception, où l’idée, la structure, le comment commence à s’emboîter au fur et à mesure de ma réflexion, des lectures que je fais sur le net sur l’état de l’art actuel, sur les normes applicables ou sur le point de l’être.
Aujourd’hui, ou plutôt depuis quelques jours, je réfléchis à l’implémentation des CSP dans les pages de l’administration de Dotclear et dans les pages des blogs telles qu’elles sont vues côté public.
Ça fait déjà plusieurs mois — en fait depuis la conférence de Nicolas Hoffmann sur ce sujet à Paris-Web 2015 — que j’ai ce sujet en arrière-plan ; Un ticket a même été ouvert par Bruno (Dsls) il y a déjà deux ans de ça et j’aimerais bien pouvoir intégrer ça dans la prochaine version 2.10 de Dotclear.
C’est assez subtil à mettre en place, parce qu’il faut à la fois verrouiller autant que faire se peut, mais ne pas bloquer ce qui est légitime ; et il faut prévoir des usages externes, comme ceux pouvant être implémentés dans certains plugins, ou lorsqu’on utilise un CDN[1].
Ça milite aussi pour une plus grande rigueur côté code. Par exemple, les CSP sont plutôt contradictoires avec la présence de scripts ou de styles inline. Or — je n’ai pas encore fait l’inventaire la dessus — il me semble qu’on en utilise pas mal.
Et puis on touche à des notions plutôt maitrisées par des geeks, voire même des geeks avertis mais il faut également faire en sorte que ce soit utilisable et configurable par le plus grand nombre des administrateurs.
Pour conclure, et en tenant compte de mes premières réflexions, ça ne sera pas activé d’emblée sur Dotclear, trop de casse possible, et il faudra prévoir un mode reporting only qui permette d’inventorier les potentielles violations des clauses activées pour affiner ces dernières, ou pour demander des évolutions aux développeurs des plugins et/ou thèmes installés.
Si ça vous intéresse, on peut en causer ici ou ailleurs !
Quelques liens externes que j’ai glanés ici et là :
- CSP useful, a collection of scripts, thoughts about CSP — Nicolas Hoffmann
- CSP : Content Security Policy — Conférence Paris-Web 2015 de Nicolas Hoffmann
- Content Security Policy Level 1 — W3C Candidate Recommendation, 15 November 2012
- Content Security Policy Level 2 — W3C Candidate Recommendation, 21 July 2015
- Content Security Policy : Une solution indispensable pour sécuriser vos sites Internet des failles XSS — Ludovic Toinel
- An Introduction to Content Security Policy — Mike West
- Can I Use Content Security Policy — Browser support of CSP Level 1 and Level 2
Note
[1] Un content delivery network (CDN), ou réseau de diffusion de contenu (RDC), est constitué d’ordinateurs reliés en réseau à travers Internet et qui coopèrent afin de mettre à disposition du contenu ou des données (généralement du contenu multimédia volumineux) à des utilisateurs. [ Wikipedia : « Content delivery network » ]
1 De Sylvain -
Ah tient j’ai pensé à toi à la lecture du dernier article d’Alsacreations (https://www.alsacreations.com/artic…) notamment sur le passage de CSP :
:)
2 De Franck -
Oui c’est une des raisons pour laquelle ce n’est pas encore appliqué côté public des blogs dans Dotclear ; il va falloir développer un outil qui permette de régler finement au fur et à mesure.