Los usuarios que no están en los grupos permitidos de publicaciones de medios incrustados pueden eludir la restricción de carga copiando el enlace de la imagen cargada.

Pasos para reproducir

  1. Establecer Newuser max embedded media = 0
    • Esto impide correctamente que los nuevos usuarios suban imágenes antes de subirlas :white_check_mark:
  2. Configurar Embedded media post allowed groups
    • Excluir ciertos grupos de la lista de permitidos
    • Cuando un usuario que no está en los grupos permitidos sube una imagen:
      • La imagen puede aparecer en el editor
      • Solo al enviar la publicación se bloquea :cross_mark:
  3. Problema
    • Durante la edición, el usuario puede copiar el enlace de la imagen subida para eludir la restricción de subida y publicarla

Comportamiento esperado

Nuestro objetivo es impedir que los usuarios suban imágenes. Los usuarios que no estén en los grupos permitidos no deberían poder insertar ningún medio incrustado en el editor; debería bloquear las subidas en el momento de subirlas, al igual que cuando se aplica Newuser max embedded media = 0.

De lo contrario, pueden copiar el enlace de la imagen subida y eludir eficazmente la restricción para subirla.

No sé si este es un problema nuevo, pero nosotros también lo acabamos de notar:

Parece que la subida de la imagen al bucket S3 (cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com) ocurre tan pronto como se pega la imagen. La comprobación de la incrustación no ocurre hasta que se envía la publicación, pero para entonces la imagen ya existe en el bucket y se puede vincular a ella con cualquiera de las siguientes:

  • Su URL de S3
  • Su URL corta de Discourse
  • Su URL generada upload:// (es decir, simplemente eliminando el ! del principio del código de incrustación de subida autogenerado)

Me preocupa que esto signifique que incluso las incrustaciones fallidas (es decir, los intentos de subida que luego fueron denegados) se subieron al bucket y están contando en secreto para la cuota de almacenamiento del sitio incluso si el que subió pensó que fue denegado y nadie más puede ver la subida.

Lamentablemente, este error parece haber permanecido sin solución durante bastante tiempo.