La URL de CDN debe agregarse a script src de CSP

Tengo un sitio configurado con variables de entorno (ENV) de la siguiente manera:


  DISCOURSE_FORCE_HTTPS: true
  DISCOURSE_S3_ACCESS_KEY_ID: 'KEY'
  DISCOURSE_S3_SECRET_ACCESS_KEY: 'SECRET'
  DISCOURSE_BACKUP_LOCATION: 's3'
  DISCOURSE_ENABLE_S3_UPLOADS: true
  DISCOURSE_ENABLE_S3_INVENTORY: false
  DISCOURSE_S3_BACKUP_BUCKET: 'mybucket/backups'
  DISCOURSE_S3_UPLOAD_BUCKET: 'mybucket'
  DISCOURSE_S3_CDN_URL: 'https://mybuckets3.cdn.literatehosting.com'
  DISCOURSE_S3_REGION: 'us-west-1'
  DISCOURSE_BACKUP_WITH_UPLOADS: 'false'
  DISCOURSE_CDN_URL: 'https://mybucket.cdn.literatehosting.com'

Funcionaba correctamente hasta que agregué la s3 cdn url. Después de agregar el CDN de S3, mi navegador comenzó a rechazar las solicitudes al CDN normal (no S3). Agregué la URL del CDN a SiteSetting.content_security_policy_script_src= y luego volvió a funcionar. ¿Esto parece un error, no? Solo reinicié después de cambiar estas variables de entorno, no hice una reconstrucción. ¿Necesito ejecutar rake assets:precompile cuando cambié la configuración del CDN?

Hmm, esto debería funcionar correctamente. La CSP debería permitir explícitamente las carpetas específicas en S3 y los CDNs de donde provienen los scripts.

¿Qué CSP estaba enviando o envía Discourse con la página? ¿Es una instalación en una subcarpeta?

1 me gusta

Creo que lo entiendo. ¿Esa CSP está en los activos estáticos que genera rake assets:precompile? (Pero entonces, ¿por qué añadirlo a la configuración lo solucionaría?)

Temo que no conozco exactamente el método estándar para obtener la respuesta a esa pregunta.

No es una subcarpeta. Una instalación bastante estándar, aunque hay un proxy inverso de Traefik delante.

curl -I https://discourse.example.com/ o el inspector de Chrome, y obtén el contenido del encabezado Content-Security-Policy.

2 Me gusta