我们有一个 Web 应用程序,我被要求添加让用户上传文档的功能,然后其他用户可以看到和下载这些文档。这些文件通常是图像和审计文件,最初是 PDF 格式,但将来可能会扩展到其他办公格式。每个可以上传或下载文件的用户都必须先进行身份验证。服务器运行 Debian。
在我看来,有了这个功能,我们的服务器可能会通过以下场景成为病毒的传播媒介:
- 用户 1 上传了一个包含病毒的文件,
- 服务器使文件可供下载,
- 用户 2 下载受感染的文件并传播病毒。
为了减轻这种威胁,我正在考虑实施一种隔离机制,将每个文件上传到我们服务器的安全文件夹中,经过检查,只有在所有检查通过后才可供下载。我想到的安全检查是:
- 有一个文件类型的白名单,我们接受和拒绝任何不属于该类型的文件,
- 检查实际文件的类型是否与 POST 请求中公布的相同,并拒绝任何不匹配的文件,
- 对文件运行防病毒软件。
我们还可能包含特定于给定文件类型的过滤器。例如,我们可以让图像通过 ImageMagick 以存储“净化”版本。同样,我们应该能够部分解析文档文件以从中提取一些信息并执行进一步的检查。
我目前实施这些检查的想法是:
file -i
使用,检查文件类型- 使用 ClamAV 作为防病毒软件。
是否还有其他我应该考虑的攻击媒介或我应该实施的其他检查?
ClamAV 是检查文件病毒的正确工具吗?