Tastatur und Maus funktionieren nicht mehr + Content-Security-Policy-Fehler

Ich betreibe eine selbst gehostete Instanz von Discourse unter forum.embeetle.com. Sie läuft seit mehreren Jahren problemlos.

Heute Morgen habe ich festgestellt, dass die gesamte Tastatur- und Mausinteraktion mit dem Forum im Browser nicht mehr funktioniert. Ich kann jede Seite des Forums laden, aber ich kann nicht scrollen, mich nicht anmelden, nicht suchen usw.

Ich habe sowohl Firefox als auch Chromium ausprobiert: dasselbe Problem.

Die Entwicklertools von Firefox zeigen diesen Fehler an:

Content-Security-Policy: Die Einstellungen der Seite haben das Laden einer Ressource unter inline („script-src“) blockiert. forum.embeetle.com:362:10

Ich habe kürzlich keine Updates durchgeführt oder neue Plugins installiert.

Haben Sie Vorschläge, wie ich dies debuggen und beheben kann?

Soweit ich weiß, habe ich eine Standard-Docker-basierte Installation, außer dass ich sie hinter einem Nginx-Reverse-Proxy betreibe. Nginx-Konfiguration unten (nicht sicher, ob sie relevant ist):

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;
}

Es scheint, dass Ihre Website im abgesicherten Modus mit deaktivierten Themes einwandfrei funktioniert.

Sie haben Recht.

Ich kann mich nicht erinnern, jemals ein Standardthema festgelegt zu haben, aber vielleicht habe ich es getan und vergessen.

Ich möchte die Themen vorerst standardmäßig deaktivieren, damit unser Forum nutzbar ist, während wir herausfinden, was mit den Themen nicht stimmt. Wie kann ich das tun, wenn ich nur über die Admin-Seiten mit deaktivierten Themen darauf zugreifen kann? Im abgesicherten Modus sind alle Themen bereits deaktiviert, und das Aktivieren und anschließende erneute Deaktivieren scheint keine Auswirkung zu haben.

Es stehen drei Themen zur Verfügung (siehe unten). Keines davon ist standardmäßig aktiviert.

Außerdem gibt es im abgesicherten Modus keine Content-Security-Policy-Fehler.

Seltsamerweise meldet Safari bei mir, dass die Ausführung von Zeile 315 verweigert wird. Das ist das Inline-Skript für den Discourse-Splash-Preloader. Also nicht themenbezogen.

Als sofortige Lösung könnten Sie CSP mit einer Site-Einstellung deaktivieren:
Screenshot 2023-11-06 at 14.24.11

Nur eine Vermutung: Wenn das Problem weiterhin besteht, könnte Ihre Serverumgebung etwas Unerwartetes senden. Oder ein anderes Skript stört (führen Sie benutzerdefinierte Plugins oder andere Skripte aus?)

Beachten Sie, dass dies Sie in einem unsicheren Zustand lässt und so schnell wie möglich behoben werden sollte. Aber zumindest funktioniert Ihr Forum wieder.

Ja, das ist genau das, was bei mir passiert.

Ich habe vorerst eine andere Problemumgehung implementiert, indem ich eine Umschreibung in der Nginx-Konfiguration (auf Serverebene) wie folgt hinzugefügt habe:

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

Besucher werden also jetzt standardmäßig den sicheren Modus verwenden.

Um die weitere Untersuchung dieses Problems zu ermöglichen, habe ich auch den Forenserver ohne die rewrite unter https://raw.forum.embeetle.com dupliziert. Wenn Sie diese URL besuchen, sehen Sie immer noch das ursprüngliche Problem.

Ich verwende keine benutzerdefinierten Skripte. Ich verwende einige Plugins und werde experimentieren, ob das Deaktivieren eines davon eine Auswirkung hat.

Dies sind die Plugins, die ich verwende:

chat war bereits deaktiviert.

Ich habe versucht, discourse-math, footnote und spoiler-alert zu deaktivieren; das Problem besteht weiterhin.

Gefunden: Es war tatsächlich ein Problem mit meiner Nginx-Konfiguration, die nun versehentlich einen zu strengen Content-Security-Policy-Header ausgegeben hat, der für Discourse zu restriktiv ist.

Das Entfernen der Content-Security-Policy hat mein Problem behoben.

3 „Gefällt mir“

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