Symptômes : après la mise à jour vers la version 3.4, le forum entier a affiché « Oops ». Pour aggraver les choses, les journaux sont restés complètement silencieux à ce sujet.
Il y avait un composant de thème avec « étendre la politique de sécurité » avec la valeur script-src: 'unsafe-eval' https://redacted.example.com
Cela a fait planter tout le forum en raison d’une exception levée dans le répartiteur d’actions, car il y avait un espace dans la valeur.
ActionDispatch::ContentSecurityPolicy::InvalidDirectiveError (Invalid Content Security Policy script-src: \\\"'unsafe-eval' https://redacted.example.com\\\". Les valeurs de directive ne doivent pas contenir d'espaces
ou de points-virgules. Veuillez utiliser plusieurs arguments ou d'autres méthodes de directive à la place.)
Oh, j’ai oublié la chose la plus importante. Le mode sans échec n’a pas fonctionné !!
Je vais examiner cela plus en détail et je reviendrai vers vous. Quelle était la version de Discourse de votre forum avant la mise à niveau vers la 3.4 ?
Ce changement de comportement dans la gestion des directives CSP provenait d’un correctif de sécurité rétroporté dans Rails - j’en parle plus en détail dans la PR. Discourse filtrera désormais ces valeurs avant de construire le CSP.
Concernant le mode sécurisé, comme il désactive uniquement le côté JavaScript des choses, il n’aurait pas aidé ici puisque ces données sont traitées côté serveur.