Sichere Medien-Uploads beschädigen Kategorie-Logos

Die Optionen „Secure Media“ und „Enable S3 Uploads“ scheinen die Kategorie-Logos zu stören.

Ich habe kürzlich festgestellt, dass hochgeladene Dokumente über direkte URL-Links von Benutzern eingesehen bzw. heruntergeladen werden konnten, die keinen Zugriff auf den privaten Beitrag hatten, in dem das Dokument hochgeladen wurde. Ich war der Auffassung, dass zunächst „S3 Uploads“ aktiviert werden muss, um die „Secure Media“-Funktion zu nutzen. Daher habe ich das zunächst aktiviert und die Uploads manuell vom Discourse-Server in den S3-Bucket kopiert. Anschließend habe ich diesen Beitrag befolgt, um „Secure Media“ zu aktivieren:

Nach Befolgen dieses Verfahrens musste ich ein „discourse remap“ durchführen, um /uploads/default/ in //bucketname-etc-etc/ zu ändern. Nach dem Remap habe ich rake posts:rebake ausgeführt, und im Großen und Ganzen sah alles gut aus. Alle anderen Uploads (Dokumente und Bilder in Beiträgen, Bilder für die Website-Branding usw.) wurden weiterhin korrekt angezeigt und verlinkt, nachdem „Secure Media“ aktiviert und die entsprechenden Rake- und Remap-Aufgaben ausgeführt worden waren. Ich musste zwar Benutzer-Avatare und Gruppenlogos erneut hochladen, aber sobald diese neu hochgeladen waren, wurden sie alle korrekt angezeigt und hatten erwartungsgemäß die neuen kurzen URLs sowie die „secure-media-uploads“-URLs.

Ich habe jedoch festgestellt, dass die Kategorie-Logo-Bilder nicht mehr angezeigt wurden. Beim Überprüfen im Entwicklermodus meines Browsers fiel mir auf, dass beim erneuten Hochladen eines Kategorie-Logo-Bildes die korrekte „secure-media-uploads“-URL erstellt wurde und das Bild korrekt angezeigt wurde. Sobald ich jedoch auf „Kategorie speichern“ klickte, wurde die Kategorie-Seite neu geladen und versuchte fälschlicherweise, direkt auf die ungesignierte AWS-S3-URL für das Bild zuzugreifen, wodurch die Anzeige des Bildes verhindert wurde:

Jede Seite in Discourse, die ein Kategorie-Logo-Bild anzeigt, versucht, das Bild direkt auf die ungesignierte AWS-S3-URL statt auf die „secure-media-uploads“-URL abzubilden.

Als Workaround musste ich mühsam jedes Kategorie-Logo-Bild-Objekt in AWS S3 aufrufen und die Berechtigungen auf „Public Read“ ändern.

Ich habe bestätigt, dass dieses Verhalten in den Browsern Chrome, Firefox und Microsoft Edge auftritt. Ich habe die Rake-Aufgaben posts:rebake und uploads:secure_upload_analyse_and_update ausgeführt, aber diese scheinen nichts mit dem Kategorie-Logo zu bewirken. Gibt es vielleicht eine andere Aufgabe, die diese falsch abgebildeten Kategorie-Logo-Bild-URLs behebt? Oder ist dies tatsächlich beabsichtigt, sodass alle S3-Upload-Objekte außer denen, die sicher sind (private Beiträge), auf „Public Read“ stehen müssen?

3 „Gefällt mir“

Danke, dass du das angesprochen hast. Mir war nicht bewusst, dass es Kategorie-Logos gibt :sweat: Ich werde mir das diese Woche ansehen und versuchen, eine Lösung für dich zu finden.

6 „Gefällt mir“

Super! Vielen Dank, @martin!

3 „Gefällt mir“

Ich denke, das Hauptproblem hier ist, dass secure_upload_analyse_and_update etwas zu streng ist, wenn es darum geht, zu bestimmen, was sicher sein sollte und was nicht. Die Klasse UploadSecurity (discourse/lib/upload_security.rb at main · discourse/discourse · GitHub) prüft beim Hochladen, ob diese Art von öffentlichen Uploads (z. B. Avatare, Kategorie-Logos usw.) sicher sein sollen oder nicht. Dieser type ist jedoch nicht vorhanden, wenn die Prüfung erneut im Rake-Task durchgeführt wird.

Ich habe intern eine Aufgabe zur Verbesserung dieses Problems verfolgt, bei der alle Orte überprüft werden, an denen ein Upload zum Zeitpunkt dieser Sicherheitsprüfung gespeichert sein kann. Dies wird jedoch noch einige Zeit dauern und ist Teil eines größeren Plans, Upload-Referenzen übersichtlicher zu speichern.

Jedenfalls arbeite ich derzeit an einem PR, um dieses Problem zu beheben, indem Kategorie-Logos und Hintergründe als öffentliche Typen behandelt werden, wenn entschieden wird, ob sie sicher sein sollen oder nicht. Sobald dieser PR gemergt und Sie aktualisiert wurden, müssen Sie nur noch die Kategorie-Bilder neu hochladen, und dann sollte alles in Ordnung sein.

4 „Gefällt mir“