# 允许HTML上传是否安全？(2023)

**URL:** https://meta.discourse.org/t/is-it-safe-to-allow-html-uploads-2023/285629
**Category:** Support
**Created:** [2023年十一月15日 22:57 UTC](https://meta.discourse.org/t/is-it-safe-to-allow-html-uploads-2023/285629 "2023-11-15T22:57:45Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![dfabulich](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dfabulich/32/108716_2.png) [@dfabulich](https://meta.discourse.org/u/dfabulich)
#### Post date: [2023年十一月15日 22:57 UTC](https://meta.discourse.org/t/is-it-safe-to-allow-html-uploads-2023/285629/1 "2023-11-15T22:57:45Z")

</div>

继续讨论 [允许 HTML 上传是否安全？](https://meta.discourse.org/t/is-it-safe-to-allow-html-uploads/136797)：

> [@Alex\_P](#):
>
> 据我所知，上传的 HTML 文件只是像普通文件（例如存档或 PDF）一样被下载，所以是否打开它们取决于用户和浏览器设置（下载后自动打开等）。
> 
> 但这个话题提到了 XSS……
> 
> > [@](#):
> >
> > 如果我能上传一个 HTML 页面，我就可以进行所谓的跨站脚本攻击 (XSS)，因为有些浏览器会将 gif 渲染为 HTML。 [Neal Poole 在 2011 年曾写过关于 WordPress 中类似漏洞的文章](https://nealpoole.com/blog/2011/04/file-upload-xss-vulnerability-in-wordpress/)。HTML 文件可能包含 JavaScript，我可以利用它做坏事。同样，我不是安全研究员（尽管我们的社区由他们组成），所以我无法详细讨论 XSS 或进行彻底测试。我只是想知道你们是否会检查标头……
> 
> 据我理解，从下载的文件中无法与 Discourse 页面进行交互？  
> 所以最坏的情况就是显示某种钓鱼内容。

帖子中的回复是“你为什么要这样做？” 我有一个答案。

我们的论坛致力于开发网页游戏。我希望我们的用户能够通过论坛相互分发他们的游戏。（但前提是 _不会_ 导致 XSS 攻击。）

只要上传的 HTML 文件始终具有“Content-Disposition: attachment”（正如它们似乎确实如此），我就不知道这会启用任何 XSS 攻击，甚至是一种新颖的钓鱼攻击。指向 HTML 文件的链接将强制下载它，而不是直接在论坛网站上打开。

（我注意到 Gmail 允许用户下载 HTML 文件附件；这似乎没问题。）

当然，钓鱼攻击 _可以_ 非常简单。今天，任何 TL1 用户都可以直接给论坛用户发送私信，说：“你好，我是这个论坛的管理员。请把你的密码发给我。” 同样，他们已经可以在 `evil.example.com` 上创建一个看起来与论坛登录页面完全相同的网站，并试图诱骗用户点击该链接并在此处输入密码。

我猜他们 _也_ 可以尝试使用附件来做到这一点，说：“你好，我负责这个论坛，请下载这个文件并打开它，好吗？” 而该文件可能包含论坛登录页面的模拟图。

但从钓鱼的角度来看，下载一个 HTML 文件并双击它，并不会比允许用户点击指向恶意网站的链接更危险。而且，由于它更复杂，它可能会欺骗比发送钓鱼网站链接（传统方式）更少的用户。

那么，这里是否存在 XSS 风险？或者我不知道的微妙的钓鱼攻击？
