【问题标题】:Security implications of letting users render own SVG files让用户渲染自己的 SVG 文件的安全隐患
【发布时间】:2012-03-28 02:53:14
【问题描述】:

我计划让网站用户上传他们自己的 SVG 文档并使用 inkscapesvg2pdf 渲染它们。用户要么未经身份验证,要么通过简单的注册过程,所以我预计会有一些黑客尝试。因此,我应该感谢任何关于我可以通过哪些过滤来最大程度地减少安全威胁的建议。

  • Inkscape 似乎并没有被 JavaScript onload tags 打扰,并且很高兴地呈现内容而没有发生任何不愉快的事情(也就是说,我无法让 Firefox 10 使用这种方法来咳出警告框)。
  • 我担心<image xlink:href /> 标记可能会使用外部 URI 链接到巨大或格式错误的位图图像 - 从理论上讲,这可能会使服务崩溃。有没有一种简单的方法可以遍历 XML 文档来过滤这些?当然,我可以使用 XMLReader 轻松完成此操作,但想知道我是否可能需要处理诸如 onload 之类的“onload”(尽管 Firefox 只是将其视为无效而拒绝,所以这可能是不必要的担心)。 Sidenode:图像本身是可以接受的,但我认为我要么要求它们内联data:,要么将可接受的目标 URI 列入白名单,但有文件大小限制。
  • 是否有任何 SVG 指令(尤其是渲染文本)可以包含系统文件的文本内容,例如 /etc/passwd 等?
  • 我还可以采用的一种方法是根据 SVG 规范进行验证。这是我问过here的另一个问题的主题。

我正在使用带有 XMLReader 和 XMLWriter 的 PHP 5.2,尽管其他基于 PHP 流的系统也可以接受。系统是用于开发的 OS X 10.6.8 和用于生产的 LAMP。

【问题讨论】:

    标签: php xml security svg filtering


    【解决方案1】:

    是否有任何 SVG 指令(尤其是渲染文本)可以包含系统文件的文本内容,例如 /etc/passwd 等?

    您需要确保 XXE 攻击对于您的特定实现是不可能的,see here

    【讨论】:

    • 谢谢,我会调查的。如果您对如何复制此类攻击有任何想法,我将提供一些具体的东西来进行测试。
    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多