Aggiunto nella release di Discourse 2.4 di febbraio, il funzionalità Secure Uploads offre un livello di sicurezza superiore per TUTTI i file caricati (immagini, video, audio, testo, PDF, ZIP e altri) all’interno di un’istanza Discourse.
Prerequisiti
Devi aver abilitato i caricamenti su S3 sul tuo sito, il che richiede di compilare le seguenti impostazioni:
- S3 access key id
- S3 secret access key
- S3 region
- S3 upload bucket
Devi inoltre utilizzare un bucket S3 che non abbia una policy di bucket pubblica e assicurarti che tutti i file caricati esistente abbiano un ACL S3 di tipo public-read. Consulta la sezione “Abilitazione dei Secure Uploads” di seguito.
Una volta soddisfatti questi prerequisiti, puoi abilitare l’impostazione del sito “secure uploads”.
Abilitazione dei Secure Uploads
ATTENZIONE: PERICOLO
![]()
Questa è una funzionalità avanzata e il supporto al di fuori del nostro piano Enterprise sarà al massimo limitato. Abilita i secure uploads solo se sei un utente esperto.
Per abilitare i secure uploads, devi seguire questi passaggi:
- Assicurati di aver configurato i caricamenti su S3.
- Verifica se il tuo bucket S3 ha una policy di bucket pubblica. Se è così, è necessario un passaggio aggiuntivo (passaggio 4).
- Esegui il task rake
uploads:sync_s3_acls. Questo garantirà che tutti i tuoi file caricati abbiano l’ACL corretto su S3. Questo è importante; se esegui il passaggio 4 prima di questo, alcuni file potrebbero diventare inaccessibili sul tuo forum. - Rimuovi la policy di bucket pubblica dal tuo bucket se era presente nel passaggio 1.
- Abilita l’impostazione del sito “secure uploads”. Opzionalmente, abilita l’impostazione del sito “prevent anons from downloading files” per impedire agli utenti anonimi di scaricare allegati da post pubblici. Da questo momento in poi, tutti i caricamenti potrebbero essere contrassegnati come secure in base alle condizioni riportate di seguito.
- Se desideri che tutti i file caricati in precedenza vengano analizzati e potenzialmente contrassegnati come secure, esegui il task rake
uploads:secure_upload_analyse_and_update.
Nota sulla policy del bucket S3 
Devi assicurarti che il bucket su cui stai caricando i file non abbia una policy di bucket pubblica. Una policy di bucket pubblica avrà qualcosa di simile a questo:
{
"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 qui è che stiamo permettendo a * di ottenere oggetti (GetObject), il che significa che chiunque può scaricare qualsiasi cosa nel bucket. Questa etichetta indicherà anche se la policy è pubblica:
Le impostazioni qui non dovrebbero essere modificate. Nell’immagine è mostrato lo stato ideale per la scheda “Block public access”:
Cosa fa
Una volta abilitati i Secure Uploads, qualsiasi file caricato tramite il Composer verrà contrassegnato come secure o non secure in base ai seguenti criteri:
- Se hai abilitato l’impostazione del sito “login required”, tutti i caricamenti verranno contrassegnati come secure e gli utenti anonimi non potranno accedervi.
- Se stai caricando qualcosa all’interno di un Messaggio Privato, verrà contrassegnato come secure.
- Se stai caricando qualcosa all’interno di un Argomento che si trova in una Categoria privata, verrà contrassegnato come secure.
Il caricamento su S3 avrà un ACL privato, quindi i collegamenti diretti al file su S3 restituiranno un errore 403 “access denied”. Qualsiasi accesso ai secure uploads avverrà tramite un URL firmato di S3. Tuttavia, questo sarà nascosto ai tuoi utenti; se un caricamento è secure, qualsiasi riferimento ad esso verrà effettuato tramite l’URL Discourse /secure-uploads/.
Permessi e controllo degli accessi
L’URL /secure-uploads/ determinerà se l’utente corrente è autorizzato ad accedere al file multimediale e lo servirà se lo è. Quando il caricamento viene creato, il post in cui appare per la prima volta verrà impostato come suo “post di controllo degli accessi” e tutti i permessi saranno basati su quel post.
- Se hai abilitato l’impostazione del sito “login required”, gli utenti anonimi riceveranno sempre un errore 404 tentando di accedere all’URL.
- Se si accede a un file multimediale il cui post di controllo degli accessi è un Messaggio Privato, l’utente deve far parte di quell’argomento di Messaggio Privato per accedere al file, altrimenti riceverà un errore 403.
- Se si accede a un file multimediale il cui post di controllo degli accessi è all’interno di un argomento che si trova in una Categoria privata, l’utente deve avere accesso a quella categoria per accedere al file, altrimenti riceverà un errore 403.
Copiare gli URL /secure-uploads/ tra Post e Argomenti non è consigliabile, poiché diversi utenti avranno diversi livelli di accesso all’interno dei tuoi forum Discourse. I nuovi caricamenti dovrebbero sempre essere creati tramite il Composer. Anche le Onebox e le immagini hotlinked rispetteranno le regole dei secure uploads. Le impostazioni del sito per i caricamenti, gli emoji e i caricamenti dei temi non sono influenzati dai secure uploads, poiché devono essere pubblici.
Se un post di controllo degli accessi viene eliminato, il caricamento allegato non sarà più accessibile. ![]()
Spostamento di post con secure uploads
Se sposti un “post di controllo degli accessi” tra diversi contesti di sicurezza, il caricamento allegato potrebbe cambiare da secure a non secure o viceversa. Queste sono le situazioni che possono modificare la sicurezza di un caricamento:
- Cambiare la categoria di un argomento. Verranno esaminati tutti i post nell’argomento e lo stato di sicurezza dei caricamenti verrà aggiornato di conseguenza.
- Cambiare un argomento da pubblico a messaggio privato o viceversa. Verrà eseguito lo stesso processo sopra.
- Spostare post da un argomento a un altro argomento esistente o nuovo. Verrà eseguito lo stesso processo sopra sull’argomento di destinazione.
Secure uploads nelle email
L’incorporamento di immagini secure nelle email è abilitato per impostazione predefinita. Puoi configurare le seguenti impostazioni del sito per un controllo maggiore:
secure_uploads_allow_embed_images_in_emails: Disabilita questa opzione per oscurare le immagini secure nelle email.secure_uploads_max_email_embed_image_size_kb: Il limite massimo di dimensione dell’immagine secure che verrà incorporata, predefinito a 1 MB, per evitare che l’email diventi troppo grande. Il massimo è 10 MB. Funziona in tandem conemail_total_attachment_size_limit_kb.
Le immagini secure verranno aggiunte come allegati email e incorporate utilizzando il formato URL cid:, poiché il supporto degli URL base64 nei client di posta elettronica è ancora instabile.
Se non hai abilitato secure_uploads_allow_embed_images_in_emails o se le immagini superano i limiti di dimensione, ecco cosa vedrai al posto delle immagini secure (anche audio e video secure che non vengono incorporati):
![]()
Client Ospitati
Al momento, i secure uploads sono disponibili solo per i clienti del piano Enterprise. Contattaci per ulteriori dettagli.


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…
