Caricamenti multimediali sicuri interrompe i loghi delle categorie

Le opzioni “Secure Media” e “Enable S3 Uploads” sembrano causare problemi con i loghi delle categorie.

Recentemente ho scoperto che i documenti caricati potevano essere visualizzati o scaricati tramite un link URL diretto da parte di utenti che non avevano accesso al post privato in cui il documento era stato caricato. Avevo capito che per utilizzare la funzione Secure Media era necessario prima abilitare S3 Uploads, quindi l’ho attivato e ho copiato manualmente i file dal server Discourse al bucket S3. Successivamente ho seguito questa discussione per abilitare Secure Media:

Dopo aver seguito questa procedura, ho dovuto eseguire un remap di Discourse per cambiare /uploads/default/ in //bucketname-etc-etc/. Dopo il remap, ho eseguito rake posts:rebake e tutto sembrava funzionare correttamente nella maggior parte dei casi. Tutti gli altri file caricati (documenti e immagini nei post, immagini di branding del sito, ecc.) continuavano a essere visualizzati e collegati correttamente dopo aver abilitato Secure Media ed eseguito le attività rake e remap appropriate. Ho dovuto ricaricare le avatar degli utenti e i loghi dei gruppi, ma una volta ricaricati, venivano tutti visualizzati correttamente e presentavano i nuovi URL brevi e gli URL secure-media-uploads come previsto.

Ho notato però che le immagini dei loghi delle categorie non venivano più visualizzate. Controllando con la modalità sviluppatore del browser, ho osservato che quando ricaricavo un’immagine del logo di una categoria, veniva creato l’URL secure-media-uploads corretto e l’immagine veniva visualizzata correttamente. Tuttavia, non appena cliccavo su “Salva categoria”, la pagina della categoria si ricaricava e tentava erroneamente di mappare direttamente l’URL non firmato di AWS S3 per l’immagine, impedendone la visualizzazione:

Ogni pagina di Discourse che visualizza un’immagine del logo di una categoria tenta di mappare l’immagine direttamente all’URL non firmato di AWS S3 invece che all’URL secure-media-uploads.

Come soluzione alternativa, ho dovuto visitare con grande fatica ogni oggetto immagine del logo di categoria in AWS S3 e modificare le autorizzazioni in “Lettura pubblica”.

Ho confermato che questo comportamento si verifica nei browser Chrome, Firefox e Microsoft Edge. Ho provato le attività rake posts:rebake e uploads:secure_upload_analyse_and_update, ma sembrano non avere alcun effetto sui loghi delle categorie. Esiste forse un’altra attività che possa correggere questi URL dei loghi delle categorie mappati in modo errato? Oppure questo è effettivamente previsto dal design, richiedendo che tutti gli oggetti caricati su S3 siano accessibili in lettura pubblica, tranne quelli protetti (post privati)?

3 Mi Piace

Grazie per averlo segnalato, non sapevo che esistessero i loghi delle categorie :sweat: Ci darò un’occhiata questa settimana e cercherò di trovarti una soluzione qui.

6 Mi Piace

Fantastico! Grazie mille @martin!

3 Mi Piace

Penso che il problema principale qui sia che secure_upload_analyse_and_update è un po’ eccessivo nel determinare cosa dovrebbe o non dovrebbe essere sicuro, perché la classe UploadSecurity (discourse/lib/upload_security.rb at main · discourse/discourse · GitHub) verifica se questi tipi di caricamenti pubblici (ad esempio avatar, loghi delle categorie, ecc.) dovrebbero essere sicuri o meno al momento del caricamento, e questo type non è presente quando si effettua nuovamente il controllo nel task rake.

Ho un task tracciato internamente per migliorare questo aspetto verificando tutti i luoghi in cui un caricamento può risiedere al momento di questo controllo di sicurezza, ma è ancora lontano, e fa parte di un piano più ampio per archiviare i riferimenti ai caricamenti in modo più ordinato.

Comunque, sto costruendo un PR per risolvere questo problema rendendo i loghi e gli sfondi delle categorie di tipo pubblico quando si considera se dovrebbero essere sicuri o meno. Una volta che questo sarà unito e avrai aggiornato, dovrai semplicemente ricaricare le immagini delle categorie e tutto dovrebbe funzionare correttamente.

4 Mi Piace