Node.js:如何防止恶意图像文件上传?即,如何在 Node 中实现图像清理器?

Sam*_*arl 6 security sanitization image-uploading node.js hapijs

我正在使用 hapi.js 创建一个允许用户上传图像的网络应用程序。我验证在客户端和服务器的上传的图片只允许.jpg/ .jpeg.png.gif文件。但是,我是 Web 应用程序安全的新手,当谈到图像清理时,我有点迷茫。

我正在尝试遵循这些 OWASP上传验证指南:

  • 使用图像重写库来验证图像是否有效并去除无关内容。
  • 根据从图像处理中检测到的图像内容类型,将存储图像的扩展名设置为有效的图像扩展名(例如,不要只相信上传的标头)。

这些是我的问题:

  • 我可以简单地通过一个包运行每个上传的图像sharp,重写过程将删除任何嵌入的代码吗?的作者对安全sharp做了简短的评论,但我仍然不明白可能存在的安全问题或如何处理它们。
  • 我读过评论说将字节读入Buffer无法执行恶意代码。如果我将文件sharp作为 Buffer 对象输入到其中,是否会删除任何恶意代码并消除可能的安全问题?
  • 我是否需要通过防病毒扫描(如clamscannode-virustotalWeb Exploit Detector)运行上传的图像?如果是,我是否需要在通过图像处理器运行图像之前或之后通过扫描来运行图像,还是应该在不进行图像处理的情况下进行扫描?

我真的很想更好地了解 Web 应用程序的安全性(尤其是对于 Node 应用程序),因此非常感谢您可以就这些问题(或我可以去了解更多信息的地方)给我的任何指导。

谢谢!