免费服务器端防病毒/安全/木马保护文件上传?

我允许用户上传照片相册等照片,并附上文件(现在的文件)作为邮件附件。所以我假设我需要一些反病毒/安全工具来扫描文件,以防人们上传受感染的东西。所以有两个问题: 1)是否有任何“免费”或开源工具,我可以使用或集成到我的环境中:codeignitor php? 2)如何保护系统其他部分的上传区域?说病毒扫描程序无法捕获病毒并上传,如何防止它感染其他文件?就像上传区域可以沙箱化或者总是一样,并使用该文件路径供用户访问内容,以便它不会传播到系统的其他部分?     
已邀请:
有免费病毒扫描程序的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     
我知道这个主题已经活了三年了,但是,如果将来其他任何人都在寻找基于PHP的反病毒解决方案,对于那些没有反病毒守护程序,程序或实用程序的人来说安装在他们的主机上,无法安装反病毒守护程序,程序或实用程序,phpMussel,我编写的基于ClamAV的PHP脚本,符合Rohit(原始海报)正在寻找的内容(基于PHP的防病毒软件可以保护他们的CMS免受恶意文件上传),可能是一个可行的解决方案。它当然不是完美的,我不能保证它会抓住一切,但到目前为止,它肯定比完全没用任何东西更好。 理想情况下,按照Matt上面的建议,调用shell以让ClamScan扫描文件上传绝对是一个理想的解决方案,如果这是主持人,网站管理员或Rohit情况下的任何人能做的事情,我' d完全提出建议。我写的,因为它是一个PHP脚本,对完全依赖于PHP的任何东西都有固有的局限性,但是,在上述建议和/或类似建议不可能的情况下(例如if主机没有安装防病毒软件,并且禁用shell访问;与更便宜的共享托管解决方案相同),这就是我在这里建议的可能介入的地方 - 只需要安装PHP的东西(使用PCRE)扩展包括,无论如何都是PHP的标准),仅此而已。 还要记住,正如Matt已经建议的那样,要始终在根目录之外上传,以确保攻击者无法利用上传的文件(例如,如果攻击者试图通过上传后门程序或特洛伊木马来破坏您的系统) - 病毒不是您需要担心的唯一威胁,而且现在绝大多数的反病毒解决方案并不仅仅关注病毒。 Matt也完全正确地指出没有任何防病毒解决方案是完美的,因此,任何允许文件上传到他们的网站或服务器的人都需要保持警惕 - 防病毒解决方案是任何人都必须拥有的情况,但没有互联网安全的圣杯,它将涵盖所有可能存在的威胁。此外,重命名文件不仅仅是确保它们无法执行(可能是原始海报关于EXE的回复评论可能有所推断) - 通过重命名文件以及文件来减少目录遍历攻击等威胁的风险与攻击者试图覆盖目标系统上已存在的文件相关的风险,作为隐藏其脏工作的手段。 关于可能被反病毒解决方案恶意丢失的文件的威胁,然后可能会感染上传它们的系统;主机管理员或网站管理员在这种情况下可能做的事情是使用某种快速简单的编码过程,该过程使文件不可由系统本身执行,但可以通过负责调用的PHP脚本轻松地反转根据请求提供该文件,例如通过使用base64_encode(),bin2hex(),或者甚至只旋转几个字符并添加一个盐来替换文件的幻数或类似的东西。     

要回复问题请先登录注册