【问题标题】:Filtering malicious file types for user uploaded content过滤用户上传内容的恶意文件类型
【发布时间】:2012-07-07 08:17:01
【问题描述】:

我正在使用simple file upload script。该脚本允许过滤文件类型,但我不确定应该允许/禁止哪些文件。

我应该防止上传哪些文件类型?

【问题讨论】:

  • 您可以上传任何文件。只要确保它们不能在目标位置执行即可。我看看能不能挖出一个副本
  • 使用白名单(允许的文件类型列表)而不是黑名单(不允许的文件类型列表)可能更安全。
  • 有人上传 .php 然后在浏览器中查看会不会构成威胁?
  • 相关(虽然不是你要找的):stackoverflow.com/questions/2561517/…

标签: php virus malware


【解决方案1】:

$_FILES 中提供的 mime 是从浏览器发送的,因此信任它是不安全的。 还有其他函数可以确定文件的 mime,但请注意,它们中的大多数都依赖于文件扩展名。这是一种不好的确定方法,因为我可以轻松地将 .exe 重命名为 .png 并且函数会报告它是图像。我不确定您的需求,但您可以将脚本限制为仅允许图像文件并检查它们是否真的是带有 imagemagick 或 gd 库的图像。

没有文件对服务器是危险的。但是,如果存在允许运行用户文件的安全漏洞,则任何文件都可能是潜在威胁。

我建议不要拒绝某些文件类型,而是允许用户可能想要上传的几个文件类型。

【讨论】:

    【解决方案2】:

    找到这个(放入 .htaccess):

    php_flag engine off
    

    它'关闭' php,因此无法运行文件!然后你可以允许上传任何你想要的东西

    (感谢 Pekka 提供链接)

    【讨论】:

      【解决方案3】:

      不要列入黑名单。而是将允许的文件类型列入白名单。

      【讨论】:

        【解决方案4】:

        您应该只允许您需要的类型(白名单)。您永远不知道您的服务器、php 或人们可以创建的文件类型会发生什么变化,以及他们可以对服务器做什么。

        似乎没有理由牺牲安全性来换取更少的类型检查。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-17
          • 2022-12-08
          • 2014-05-12
          • 1970-01-01
          • 2021-08-21
          • 1970-01-01
          • 2016-04-02
          • 1970-01-01
          相关资源
          最近更新 更多