Clavier et souris ont cessé de fonctionner + erreur content-security-policy

J’exécute une instance auto-hébergée de Discourse sur forum.embeetle.com. Elle fonctionne bien depuis plusieurs années maintenant.

Ce matin, j’ai remarqué que toute interaction au clavier et à la souris avec le forum dans le navigateur avait cessé de fonctionner. Je peux charger n’importe quelle page du forum, mais je ne peux pas faire défiler, me connecter, rechercher, …

J’ai essayé Firefox et Chromium : même problème.

Les outils de développement de Firefox affichent cette erreur :

Content-Security-Policy : Les paramètres de la page ont bloqué le chargement d'une ressource à l'adresse inline (« script-src »). forum.embeetle.com:362:10

Je n’ai pas effectué de mises à jour récemment ni installé de nouveaux plugins.

Des suggestions sur la façon dont je peux déboguer et résoudre ce problème ?

À ma connaissance, j’ai une installation standard basée sur Docker, à l’exception du fait que je l’exécute derrière un proxy inverse Nginx. Configuration Nginx ci-dessous (je ne suis pas sûr qu’elle soit pertinente) :

server {
    server_name forum.embeetle.com;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/embeetle/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/embeetle/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    access_log /var/log/nginx/forum.embeetle.access.log;
    error_log /var/log/nginx/forum.embeetle.error.log;

    location / {
         proxy_pass http://unix:/srv/embeetle_forum/discourse/shared/standalone/nginx.http.sock:;
         proxy_set_header Host $http_host;
         proxy_http_version 1.1;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Real-IP $remote_addr;
        error_page 502 =502 /error/offline.html;
        proxy_intercept_errors on;
     }

     location /error/ {
         alias /srv/embeetle_forum/error/;
     }
}

server {
    server_name forum.embeetle.com;
    listen 80;
    listen [::]:80;
    return 301 https://$host$request_uri;
}

Il semble que votre site fonctionne correctement en mode sans échec avec les thèmes désactivés.

Vous avez raison.

Je ne me souviens pas avoir jamais défini de thème par défaut, mais peut-être que je l’ai fait et que j’ai oublié.

J’aimerais désactiver temporairement les thèmes par défaut, afin que notre forum soit utilisable pendant que nous trouvons ce qui ne va pas avec les thèmes. Comment puis-je faire cela, si je ne peux accéder aux pages d’administration qu’avec les thèmes désactivés ? En mode sans échec, tous les thèmes sont déjà désactivés, et les activer puis les désactiver à nouveau ne semble avoir aucun effet.

Il y a trois thèmes disponibles (voir ci-dessous). Aucun d’entre eux n’est activé par défaut.

De plus, en mode sans échec, il n’y a pas d’erreur Content-Security-Policy.

Étrange, pour moi dans Safari, il signale qu’il refuse d’exécuter la ligne 315. C’est le script inline pour le préchargeur Discourse-spash. Donc, pas lié au thème.

Pour une solution immédiate, vous pourriez désactiver le CSP à l’aide d’un paramètre de site :

Screenshot 2023-11-06 at 14.24.11

Je spécule : si le problème persiste, il pourrait s’agir de votre environnement serveur qui envoie quelque chose d’inattendu. Ou un autre script qui interfère (exécutez-vous des plugins personnalisés ou d’autres scripts ?)

Notez que cela vous laissera dans un état vulnérable et devrait être corrigé dès que possible. Mais au moins, votre forum fonctionnera à nouveau.

Oui, c’est exactement ce qui se passe pour moi.

J’ai mis en œuvre une autre solution de contournement pour l’instant, en ajoutant une réécriture dans la configuration nginx (au niveau du serveur) comme suit :

    rewrite ^(.*)$ $1?safe_mode=no_themes break;

Ainsi, les visiteurs utiliseront le mode sans échec par défaut maintenant.

Pour permettre une exploration plus approfondie de ce problème, j’ai également dupliqué le serveur de forum sans le rewrite à l’adresse https://raw.forum.embeetle.com. Si vous visitez cette URL, vous verrez toujours le problème d’origine.

Je n’utilise aucun script personnalisé. J’utilise certains plugins, j’expérimenterai si la désactivation de l’un d’entre eux a un effet.

Voici les plugins que j’utilise :

chat était déjà désactivé.

J’ai essayé de désactiver discourse-math, footnote et spoiler-alert ; le problème persiste.

Trouvé : c’était bien un problème avec ma configuration nginx qui a maintenant accidentellement émis un en-tête Content-Security-Policy trop strict pour Discourse.

La suppression de Content-Security-Policy a résolu mon problème.

3 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.