nathank
(Nathan Kershaw)
10. Juni 2026 um 03:14
1
Ich stelle fest, dass beim Klicken auf den PDF-Link, während eine PDF-Vorschau aktiv ist, derzeit versucht wird, die PDF-Datei herunterzuladen (unerwünscht), anstatt sie in einem neuen Tab zu öffnen.
Dies betrifft eine einfache Selbsthosting-Umgebung (ein einzelner Container, kein CDN, kein S3).
Dieses gesamte Problem wurde bereits hier angesprochen:
[quote=“david, post:12, topic:388190, full:true”]
Dies sollte seit SECURITY: Download allowlist for uploaded files · discourse/discourse@9c0642a · GitHub behoben sein.
Wir verfügen nun über eine zentralisierte Logik, um zu bestimmen, welche Dateien „inline
2 „Gefällt mir“
Wir waren beim display-Typ inkonsistent, je nachdem, ob Sie S3 verwenden oder nicht. Das sollte durch
main ← fix-inline-safe-uploads-local-store
approved 05:17PM - 14 Jul 26 UTC
Inline-safe uploads (images, PDFs, audio and video) served from the local
file s… tore were sent with `Content-Disposition: attachment`, so clicking a
PDF link downloaded the file instead of opening it in the browser. This was
inconsistent with the S3 store, which already serves these files inline, and
it left simple self-hosted (single-container, no S3/CDN) sites unable to open
PDFs inline.
`UploadsController#send_file_local_upload` only set the disposition to
`attachment` for unsafe types, and to `inline` when `?inline=1` was passed,
leaving it unset otherwise. Rails' `send_file` defaults an unset disposition
to `attachment`, so inline-safe files fell through to a download.
Inline-safe files are now served with `Content-Disposition: inline` by
default, mirroring the S3 store, while unsafe types (HTML, SVG, XML, ...) and
explicit downloads (`?dl=1`) keep the `attachment` disposition. The redundant
`params[:inline]` branch is removed, since inline-safe files are now inline by
default.
The `Content-Security-Policy: sandbox;` header stays on **every** response as
defense-in-depth: if the `is_inline_safe?` allowlist is ever wrong, the
sandbox forces an opaque origin and disables script execution so a
misclassified file cannot run as a document in our origin. It does not
interfere with inline viewing — `sandbox` sandboxes scripts *inside* the
served file, not the browser's native rendering of it. Chrome's built-in PDF
viewer and Firefox's pdf.js both render sandboxed PDFs identically to
unsandboxed ones, and images/audio/video decode natively regardless.
A spec locks the allowlist invariant by asserting no inline-safe extension
maps to a script-capable content type, so re-adding something like SVG or XML
to the allowlist fails CI instead of becoming a stored XSS.
behebt werden.
(cc @david )
Dass ein Klick auf eine Datei automatisch in einem anderen Tab öffnet, ist eher eine #product-Frage .
3 „Gefällt mir“
david
(David Taylor)
Geöffnet,
14. Juli 2026 um 17:14
5
Der Fix wurde noch nicht gemerged