【问题标题】:Prevent code execution from xml and other text files防止从 xml 和其他文本文件执行代码
【发布时间】:2014-05-01 19:05:24
【问题描述】:

我正在用 Flask 编写一个网站,允许用户上传然后查看文本文件(JSON 和 XML)。我用application/jsonContent-type 标头发送JSON 文件,用application/xml 发送XML。

从表单上传文件后,我使用secure_filename() 处理名称。我使用文件对象上的save() 方法将文件保存到服务器。这些文件被保存到我服务器上的一个目录中。否则,我不处理文件;对于我的项目而言,保持 xml 标记保持不变很重要,因为稍后用户可能会选择解析文件。

为了将文件返回给用户,我使用send_from_directory

我的问题是,这种设计是否容易受到 XSS 或代码注入的影响?如果是,我该如何防止此类攻击?

【问题讨论】:

  • 人们如何处理下载的 JSON 和 XML 文件?
  • 用户可以查看它们或选择使用我的应用程序处理它们。

标签: xml security flask xss code-injection


【解决方案1】:

不,您的设计不易受到 XSS 攻击。您绝不会使用任何用户提供的内容来自己生成网页。

内容通过我们的网站作为一个黑盒子代替;从浏览器到您的文件系统,然后返回到可能选择再次下载内容的其他 HTTP 客户端。

您完全控制的文件名,您从不读取文件的内容,您从不获取任何文件内容并将它们放入生成的 HTML 内容中。

可能存在的唯一问题是,有人上传的文件实际上不是 XML 或 JSON,而是利用下载器用于解析文件的任何漏洞的文件。然而,这不是 XSS 攻击。

【讨论】:

  • “无论下载器使用什么”,你的意思是浏览器用来显示这些文件的东西吗?
  • 如果浏览器显示 XML 但 XML 解析器中存在漏洞,则可以通过上传恶意 XML 文件来利用该漏洞,但这不是 XSS,也不是您的服务的错。
  • 我明白了,这是有道理的。感谢您的帮助!
猜你喜欢
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多