【问题标题】:Free server side anti virus / security / trojan protection for file uploads?文件上传的免费服务器端防病毒/安全/木马保护?
【发布时间】:2015-01-19 17:06:03
【问题描述】:

我允许用户上传照片,例如相册,还可以将文件(暂时是文档)作为邮件附件。所以我假设我需要一些防病毒/安全工具来首先扫描文件,以防人们上传受感染的东西。所以两个问题: 1)我可以使用或集成到我的环境中是否有任何“免费”或开源工具:codeignitor php? 2) 如何保护上传区域不受系统其他部分的影响?假设病毒扫描程序未能捕获病毒并被上传,如何防止它感染其他文件?比如上传区域是否可以被沙箱化或总是使用该文件路径让用户访问内容,这样它就不会传播到系统的其他部分?

【问题讨论】:

    标签: database security antivirus-integration


    【解决方案1】:

    免费的病毒扫描程序有 clamav。安装它,您可以执行以下操作:

    function virus_detected($filename)
    {
            $clamscan = "/usr/local/bin/clamscan";
            $result = exec("$clamscan -i --no-summary $filename");
            return strlen($result)?true:false;
    }
    

    至于安全性,请确保将临时文件上传到 Web 根目录之外的目录。然后,您应该验证文件类型,将文件重命名为原始文件名以外的名称,并附加适当的扩展名(gif、jpg、bmp、png)。我相信除了 php 本身的漏洞之外,这应该让你相当安全。

    有关在 php 中验证文件类型的更多信息,请查看: http://www.php.net/manual/en/function.finfo-file.php

    【讨论】:

    • 这不适用于 exe 文件,因为您可以更改它们的扩展名。
    • 我不知道这是否有效。它会保护它免受 php 攻击,但是感染系统呢? clamav 有多强大,它能否再次提供企业级保护,作为最终保护所有可能的恶意软件,还是我还需要更多?
    • 就防病毒应用程序而言,没有一个是完美的。也许您可以安装多个 av 应用程序并使用它们中的每一个进行扫描以更安心。我相信 AVG、BitDefender 和 Avast 也有 linux 版本。如果您使用的是 nix 服务器,我相信受感染的文件不应该影响您的系统本身,除非被执行。也许对这个主题有更多了解的人想插话。
    【解决方案2】:

    我知道这个话题已经三年没有活跃了,但是,如果将来有其他人同样正在寻找基于 PHP 的防病毒解决方案,对于那些没有防病毒守护程序的人,程序或实用程序安装在其主机上,但无法安装防病毒守护程序、程序或实用程序 phpMussel,这是我基于 ClamAV 编写的一个 PHP 脚本,符合要求对于 Rohit(原始发帖人)正在寻找的东西(一种基于 PHP 的防病毒软件来保护他们的 CMS 免受恶意文件上传),可能是一个可行的解决方案。它当然不是完美的,我不能保证它会捕获所有东西,但到目前为止,它肯定比什么都不使用要好。

    理想情况下,正如 Matt 上面已经建议的那样,调用 shell 让 ClamScan 扫描文件上传绝对是一个理想的解决方案,如果这是主机管理员、网站管理员或处于 Rohit 情况的任何人能够做到的事情,我完全赞成这个建议。我所写的,因为它是一个 PHP 脚本,对于完全依赖 PHP 才能运行的任何东西都有固有的限制,但是,在上述建议和/或类似建议不可能的情况下(例如,如果主机没有安装防病毒软件并且外壳访问被禁用;常见于更便宜的共享托管解决方案),这就是我在这里建议可能介入的地方 - 只需要安装 PHP 的东西(使用 PCRE包括扩展,无论如何这是现在 PHP 的标准),仅此而已。

    还请记住,正如 Matt 已经建议的那样,始终上传到根目录之外,以确保上传的文件不会被攻击者利用(例如,如果攻击者试图通过上传后门来破坏您的系统或木马) - 病毒不是您需要担心的唯一威胁,现在绝大多数反病毒解决方案不仅仅关注病毒。 Matt 也完全正确地指出,没有防病毒解决方案是完美的,因此,任何允许将文件上传到其网站或服务器的人都需要保持警惕 - 防病毒解决方案对于任何人来说都是必备的情况,但不存在涵盖所有可能威胁的互联网安全圣杯。此外,重命名文件不仅仅是为了确保它们无法执行(正如原始发布者关于 EXE 的回复评论可能有所推断) - 通过重命名文件以及与攻击者试图覆盖目标系统上已存在的文件以隐藏其肮脏工作相关的风险。

    关于可能恶意文件被防病毒解决方案遗漏并可能感染它们上传到的系统的威胁;在这种情况下,主机管理员或网站管理员可能会做的是采用某种快速简单的编码过程,该过程会使文件无法由系统本身执行,但可以通过负责调用的 PHP 脚本轻松轻松地逆转请求该文件,例如通过使用 base64_encode()、bin2hex(),或者甚至只是旋转几个字符并添加盐来替换文件的幻数或类似的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 2020-10-14
      • 2012-06-28
      相关资源
      最近更新 更多