Añadido en la versión 2.4 de Discourse en febrero está la función de Cargas Seguras, que proporciona un mayor grado de seguridad para TODAS las cargas (imágenes, video, audio, texto, PDFs, ZIPs y otros) dentro de una instancia de Discourse.
Requisitos previos
Debes tener las cargas en S3 habilitadas en tu sitio, lo cual requiere que se completen los siguientes ajustes:
- ID de clave de acceso de S3
- Clave de acceso secreta de S3
- Región de S3
- Bucket de carga de S3
También debes estar utilizando un bucket de S3 que no tenga una política de bucket pública, y debes asegurarte de que todas las cargas existentes tengan una ACL de S3 de lectura pública. Consulta la sección “Habilitar Cargas Seguras” más abajo.
Una vez satisfechos estos requisitos previos, puedes habilitar el ajuste de sitio “cargas seguras”.
Habilitar Cargas Seguras
AQUÍ HAY DRAGONES
![]()
Esta es una función avanzada y el soporte fuera de nuestro nivel Enterprise será limitado como máximo. Solo habilita las cargas seguras si eres un usuario experto.
Para habilitar las cargas seguras, debes seguir estos pasos:
- Asegúrate de tener las cargas en S3 configuradas.
- Anota si tu bucket de S3 tiene una política de bucket pública. Si es así, se requiere un paso adicional (paso 4).
- Ejecuta la tarea rake
uploads:sync_s3_acls. Esto asegurará que todas tus cargas tengan la ACL correcta en S3. Esto es importante; si realizas el paso 4 antes de hacer esto, algunas cargas podrían volverse inaccesibles en tu foro. - Elimina la política de bucket pública de tu bucket si estaba presente en el paso 1.
- Habilita el ajuste de sitio “cargas seguras”. Opcionalmente, habilita el ajuste de sitio “prevenir que los anónimos descarguen archivos” para detener a los usuarios anónimos de descargar adjuntos de publicaciones públicas. Todas las cargas a partir de este momento podrían marcarse como seguras dependiendo de las condiciones siguientes.
- Si deseas que todas las cargas se analicen retroactivamente y posiblemente se marquen como seguras, ejecuta la tarea rake
uploads:secure_upload_analyse_and_update.
Nota sobre la política del bucket S3 
Debes asegurarte de que el bucket al que estás cargando no tenga una política de bucket pública. Una política de bucket pública tendrá algo como esto:
{
"Version": "2012-10-17",
"Id": "ComputedBucketPolicy",
"Statement": [
{
"Sid": "AllowWorldRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
La parte importante aquí es que estamos permitiendo que * cualquier persona * obtenga objetos, lo que significa que cualquiera puede descargar cualquier cosa en el bucket. Esta etiqueta también mostrará si la política es pública:
Los ajustes aquí no deben modificarse. La imagen muestra el estado ideal para la pestaña “Bloquear acceso público”:
Qué hace
Una vez que hayas habilitado las Cargas Seguras, cualquier archivo cargado a través del Composer se marcará como seguro o no seguro según los siguientes criterios:
- Si tienes habilitado el ajuste de sitio “inicio de sesión requerido”, todas las cargas se marcarán como seguras, y los usuarios anónimos no podrán acceder a ellas.
- Si estás cargando algo dentro de un Mensaje Personal, se marcará como seguro.
- Si estás cargando algo dentro de un Tema que está dentro de una Categoría privada, se marcará como seguro.
La carga en S3 tendrá una ACL privada, por lo que los enlaces directos al archivo en S3 devolverán un error 403 de acceso denegado. Cualquier y todo acceso a las cargas seguras será a través de una URL firmada por S3. Sin embargo, esto estará oculto para tus usuarios; si una carga es segura, cualquier referencia a ella se realizará a través de la URL de Discourse /secure-uploads/.
Permisos y control de acceso
La URL /secure-uploads/ determinará si el usuario actual tiene permiso para acceder al medio y lo servirá si es así. Cuando se crea la carga, la publicación en la que aparece por primera vez se establecerá como su “publicación de control de acceso” y todos los permisos se basarán en esa publicación.
- Si tienes habilitado el ajuste de sitio “inicio de sesión requerido”, los usuarios anónimos siempre recibirán un error 404 al acceder a la URL.
- Si accedes a un medio cuya publicación de control de acceso es un Mensaje Personal, el usuario debe ser parte de ese tema de Mensaje Personal para acceder al medio; de lo contrario, el usuario recibirá un error 403.
- Si accedes a un medio cuya publicación de control de acceso está dentro de un tema que está dentro de una Categoría privada, el usuario debe tener acceso a esa categoría para acceder al medio; de lo contrario, el usuario recibirá un error 403.
Copiar URLs de /secure-uploads/ entre Publicaciones y Temas no es aconsejable, ya que diferentes usuarios tendrán diferentes niveles de acceso dentro de tus foros de Discourse. Las nuevas cargas siempre deben crearse a través del Composer. Las Oneboxes y las imágenes con enlaces directos también respetarán las reglas de cargas seguras. Los ajustes de sitio, emojis y cargas de temas no se ven afectados por las cargas seguras, ya que deben ser públicos.
Si se elimina una publicación de control de acceso, la carga adjunta ya no será accesible. ![]()
Mover publicaciones con cargas seguras
Si mueves una “publicación de control de acceso” entre diferentes contextos de seguridad, la carga adjunta podría cambiar a segura o no segura. Estas son las situaciones que pueden cambiar la seguridad de una carga:
- Cambiar la categoría de un tema. Recorrerá todas las publicaciones del tema y actualizará el estado de seguridad de las cargas en consecuencia.
- Cambiar un tema entre ser un tema público y un mensaje personal. Hará lo mismo que arriba.
- Mover publicaciones de un tema a otro tema nuevo o existente. Ejecutará lo mismo que arriba en el tema de destino.
Cargas seguras en correos electrónicos
La incrustación de imágenes seguras en correos electrónicos está habilitada de forma predeterminada. Puedes configurar estos ajustes de sitio para un control adicional:
secure_uploads_allow_embed_images_in_emails: Deshabilita esto para omitir las imágenes seguras en los correos electrónicos.secure_uploads_max_email_embed_image_size_kb: El límite máximo para el tamaño de la imagen segura que incrustaremos, con un valor predeterminado de 1 MB, para que el correo electrónico no se vuelva demasiado grande. El máximo es 10 MB. Funciona junto conemail_total_attachment_size_limit_kb.
Las imágenes seguras se agregarán como archivos adjuntos de correo electrónico y se incrustarán utilizando el formato de URL cid: porque el soporte de URL base64 en los clientes de correo electrónico aún es inestable.
Si no tienes habilitado secure_uploads_allow_embed_images_in_emails, o si las imágenes comienzan a exceder los límites de tamaño, esto es lo que verás en lugar de las imágenes seguras (también audio y video seguros que no se incrustan):
![]()
Clientes alojados
Por el momento, las cargas seguras están disponibles solo para nuestros clientes del plan Enterprise. Por favor, contáctanos para más detalles.


ADVANCED thing, not for the faint of
, and there is a limit to how much we will support it outside our enterprise tier. Bring your own expertise…
