远程内容、PII 和热链接

大家好,我很喜欢这个平台。我想请教一下如何控制远程内容的位置。

例如,我想禁止加载不受信任的资源。举个例子,我可以用一张 JPG 图片:![](upload://qg7z2WGH8Z9lqqpIvewlo529bxD.gif),这张其实并不是真正的 JPG,但所有查看者都会泄露他们的 IP 地址,更重要的是,还会泄露他们的用户代理信息。

我希望只允许上传并渲染的内容,但允许例外,比如 YouTube 或一些常见的在线存储平台。

当前的 Discourse 版本是否支持这样的功能?我将把这个论坛用于网络取证工作,如果能够通过某种方式修复像这样的 PII(个人身份信息)泄露问题,无论是出现在帖子中还是个人资料内容里,那它将非常符合我的需求。

谢谢!

我使用了 Canary Tokens 来“伪造”一张 JPEG 图片:http://canarytokens.com/,并将其封装在 Markdown 图片语法中。

我们通过下载远程内容的副本来避免热链接,因此用户能够热链接 JPG 的时间窗口非常短。

不过,我并不反对在 Discourse 上提供某种选项,允许我们在下载热链接图片的过程中,用“正在下载图片”的提示来替换图片。

嘿 Sam,感谢你的时间。我可以在日志中看到 Ruby 的用户代理,但如果有人查看我的资料,我确实能获取到查看者的 IP 地址。也许获取/中间件并不是全局适用于应用的所有区域?

我想内容安全策略(Content Security Policy)或许能短期解决这个问题,但与此同时,在他们弄清楚状况之前,用户体验会很糟糕,哈哈。

感谢你的时间和对此事的看法!

你的意思是你在“关于我”部分直接链接了一张图片吗?

我们显然不应该允许这种做法,我认为这是一个漏洞。

嘿,Sam,没错,这种情况下我用 Markdown 命令 ![]() 来引用远程图片——我还不算资深用户,所以不确定是否还有其他方式支持引用远程内容。不过你可以试试看,我想我是把它放在个人资料的“关于我”区域了。

我觉得“新用户不能 X"的限制在这里应该不适用。