启用“安全媒体”后,链接在复制或引用时会中断

复现步骤:

  1. 启用安全媒体
  2. 创建一个新话题,并拖入媒体文件(PDF 文件即可)
  3. 回复你自己的话题,粘贴媒体内容(或直接引用你自己)

现在你可以观察到:点击原始媒体附件可以正常工作,但点击引用/复制的媒体链接(即使它是完全相同的链接)却会导致错误页面:
image
我怀疑这可能与 referrer 标签有关,因为这是唯一的差异。

1 个赞

我不确定这是否属于允许的用途场景。安全媒体意味着媒体内容与帖子强关联,而此处依赖的是松散关联。

@martin 本周晚些时候可以确认。

感谢您的回复!

如果本意是让媒体文件与帖子关联,那么这里存在一个更严重的“漏洞”。因为目前的情况是,您可以复制媒体文件的 URL(格式类似 https://www.my.domain/secure-media-uploads/original/1X/db86496651c78aa64adbe43b2907654555002.pdf),然后直接分享给任何已登录 Discourse 的用户。他们只需将链接粘贴到浏览器地址栏(甚至无需打开 Discourse 页面),即可下载该文件。

此功能仅适用于 S3,且目前尚不清楚您是否已启用该功能。

是的,S3 已启用。否则我无法使用“安全媒体”功能。

我建议你再更仔细地测试一下:在私信中发布一张图片,你会发现没有权限查看私信的普通用户也无法访问。

如果已登录用户能够访问包含 PDF 的帖子,他们就可以下载该文件。

啊,这是个很好的观点。我马上测试一下。

编辑:好的,抱歉,你是对的,只有能访问该帖子的用户才能下载媒体。不过,这并不要求用户必须点击帖子链接。既然链接已被复制,且用户拥有原始媒体的访问权限,我仍然认为应该允许直接下载,而无需强制用户将 URL 复制粘贴到地址栏中。

我本周会抽空为您查看这个问题,感谢您的报告。

3 个赞

抱歉延误,此问题已通过 FIX: Add secure media url to SERVER_SIDE_ONLY list by martin-brennan · Pull Request #11348 · discourse/discourse · GitHub 修复。

3 个赞