Teclado y ratón dejaron de funcionar + error de content-security-policy

Estoy ejecutando una instancia autoalojada de Discourse en forum.embeetle.com. Ha estado funcionando bien durante varios años.

Esta mañana, noté que toda la interacción del teclado y el mouse con el foro en el navegador dejó de funcionar. Puedo cargar cualquier página del foro, pero no puedo desplazarse, iniciar sesión, buscar, etc.

Probé tanto Firefox como Chromium: el mismo problema.

Las herramientas de desarrollador de Firefox muestran este error:

Content-Security-Policy: La configuración de la página bloqueó la carga de un recurso en línea ("script-src"). forum.embeetle.com:362:10

No he realizado ninguna actualización ni he instalado ningún plugin nuevo recientemente.

¿Alguna sugerencia sobre cómo puedo depurar y solucionar esto?

Hasta donde sé, tengo una instalación estándar basada en docker, excepto que la estoy ejecutando detrás de un proxy inverso Nginx. Configuración de Nginx a continuación (no estoy seguro de si es relevante):

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

Parece que tu sitio funciona bien en modo seguro con los temas deshabilitados.

Tienes razón.

No recuerdo haber establecido un tema por defecto, pero quizás lo hice y lo olvidé.

Me gustaría deshabilitar temporalmente los temas por defecto, para que nuestro foro sea utilizable mientras averiguamos qué está mal con los temas. ¿Cómo puedo hacerlo, si solo puedo acceder a las páginas de administración con los temas deshabilitados? En modo seguro, todos los temas ya están deshabilitados, y habilitarlos y luego deshabilitarlos de nuevo no parece tener ningún efecto.

Hay tres temas disponibles (ver abajo). Ninguno de ellos está habilitado por defecto.

Además, en modo seguro no hay ningún error de Content-Security-Policy.

Extraño, para mí en Safari, está informando que se niega a ejecutar la línea 315. Que es el script en línea para el precargador de Discourse-spash. Así que no está relacionado con el tema.

Como solución inmediata, podría deshabilitar CSP usando una configuración del sitio:
Screenshot 2023-11-06 at 14.24.11

Solo especulando: Si el problema persiste, podría ser que su entorno de servidor esté enviando algo inesperado. ¿O algún otro script interfiriendo (está ejecutando algún plugin personalizado u otros scripts)?

Tenga en cuenta que eso lo dejará en un estado vulnerable y debería solucionarse lo antes posible. Pero al menos su foro vuelve a funcionar.

Sí, eso es exactamente lo que me está pasando.

Por ahora, he implementado una solución alternativa diferente, añadiendo una reescritura en la configuración de nginx (a nivel de servidor) de la siguiente manera:

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

Así que los visitantes usarán el modo seguro por defecto ahora.

Para permitir una mayor exploración de este problema, también he duplicado el servidor del foro sin la rewrite en https://raw.forum.embeetle.com. Si visitas esa URL, todavía verás el problema original.

No estoy usando ningún script personalizado. Estoy usando algunos plugins, experimentaré si deshabilitar alguno de ellos tiene algún efecto.

Estos son los plugins que estoy usando:

chat ya estaba deshabilitado.

Intenté deshabilitar discourse-math, footnote y spoiler-alert; el problema persiste.

Lo encontré: en realidad fue un problema con mi configuración de nginx que ahora emitió accidentalmente un encabezado Content-Security-Policy demasiado estricto para Discourse.

Eliminar Content-Security-Policy solucionó mi problema.

3 Me gusta

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