查看/下载PHP上传 - 如何安全地进行病毒?

问题描述 投票:2回答:1

现在我已经阅读了大量关于如何检查PHP上传是否是病毒安全的SO主题,其中的要点是:我无法100%保证上传不会充满病毒 - 无论扩展名如何。一个建议的解决方案是在上传期间删除扩展,然后在人们想要下载时重新组合它。

但是,我想让用户直接在网站上查看文件。我该怎么做呢?例如,生成内部上传PDF的iframe - 是安全还是执行它会给潜在的病毒传播机会?有了DOC,我想使用Google Docs,所以我嵌入了一个Google Docs的iframe,它在我的服务器上获取了DOC的URL。这样安全吗?

或者除了仅允许下载以防止潜在的病毒在服务器上传播之外别无他法?如果是这样,如何重新组装扩展?我猜,当有人上传test.exe时,我会删除.exe部分但存储在数据库中。然后当有人请求下载时,我将测试文件重命名为test.exe并推送下载。之后我将其重新命名为test。那是对的吗?

另外:像Trello这样的服务如何做到这一点?当我在那里上传图像文件时,它会直接显示 - 通过病毒扫描或其他任何事情都没有明显的延迟。我想过使用virustotal.com API,但这肯定需要很长时间,不是吗?是不是可以让人们上传,然后在完成virustotal.com扫描之前不公开显示它们然后认为文件安全?

如果我错过了什么,感谢并欢呼所有帮助和抱歉。

php security file-upload upload virus
1个回答
1
投票

多年来我在实践中看到了一些方法:

  1. 使用例如本地扫描它ClamAV的。 亲:如果您的病毒检测是最新的,您将以这种方式捕获任何已知的病毒。 Con:反病毒软件是攻击面。查看来自Google Project Zero的Tavis Ormandy的许多发现。 Con:可能对服务器资源造成负担。 (也许启动一个专门用于AV目的的不同服务器?)
  2. 使用API​​,例如VirusTotal。 亲:减少攻击面。 Con:您必须与VirusTotal共享该文件,如果您允许用户上传的文件特别敏感(即受保护的健康信息),这可能是一个坏主意。

我不确定要推荐哪个,因为我不知道您的威胁模型或操作限制。

但是,不提供浏览器漏洞(例如XSS)或允许服务器上的反向shell的更普遍的问题实际上是somewhat easy,但不是微不足道的。

© www.soinside.com 2019 - 2024. All rights reserved.