如何在上传时扫描并删除恶意文件?

Ram*_*nan 0 node.js express

此时上传恶意文件时需要扫描并删除该文件。NPM中有什么特殊的包吗?您能帮我解决这个问题吗?先谢谢了。

PAL*_*SAI 5

以下 2 个步骤是基本步骤。

  1. 在前端仅允许特定的文件扩展名,例如(.pdf、.png 等),并具有大小等限制。(不要忘记前端代码是可以操作的)。

2.您还应该在后端检查文件扩展名和大小(如果您使用节点,您可以使用 multer 来实现这一点。)

我们在后台还可以做什么?

  1. 如果我们只依赖于扩展检查,那是没有帮助的。(任何人都可以将sample.exe的名称修改为sample.jpg并上传)。

例如,如果您除了检查文件扩展名之外,还检查文件是否在后端上传图像,您也可以遵循以下方法。

PNG 文件的前八个字节始终包含以下(十进制)值: 137 80 78 71 13 10 26 10

如果您想检查上传的文件是否为 png,则上述条件有效。不仅如此,如果您想检查是否正确上传的文件,您可以按照上面提到的一些方法进行操作。(对于 .pdf、.doc 可能存在一些规则)您可以检查 MIME 签名数据,这是最佳实践。

  1. 不要将上传的文件保存在后端代码库中。将它们存储在其他工作空间中。(选修的)

以下链接可能会有所帮助。

云存储

除了将文件存储在本地服务器之外,您还可以将上传的文件保存在云上,例如亚马逊 s3 存储桶。每次将任何文件上传到该 s3 存储桶后,您都可以使用 lambda(亚马逊上的自动文件扫描程序)触发扫描程序。

除了亚马逊之外,您还可以使用谷歌驱动器进行文件上传(不是最佳选择)。但是当有人下载​​上传的文件时,谷歌会自动扫描病毒。

亚马逊的 s3 存储桶文件的扫描链接::

亚马逊 s3 存储桶文件扫描 SO

亚马逊 s3 存储桶文件 reddit

使用 lambda 和 clamav 扫描 s3 文件

对于本地服务器::

检查 MIME 签名官方文档

检查文件类型插件

蛤扫描 npm

检查不带扩展名的图像内容 SO 1

检查不带扩展名的图像内容 SO 2