首页 > 解决方案 > 使用 Node 和 AWS Lambda 保护图像上传

问题描述

我正在通过浏览器表单实现图像上传,并且正在使用 AWS 和 NodeJS。该过程是用户选择一个文件,提供附加信息,然后使用multipart/form-data.

这很好用,因此有效负载通过 API Gateway ---> Lambda 并且此 lambda 上传到 S3 存储桶。我正在使用busboy处理多部分数据并最终得到包含从前端发送的所有数据的漂亮 JSON 对象,例如:

{
    userName: "Homer Simpson",
    file: base64endcoded_string,
}

然后我抓住它base64endcoded_string并上传到 S3,这样文件就在那里,我可以打开它,下载等。

现在,显然我不信任来自前端的任何输入,我想知道确保发送的文件不是恶意的最佳方法是什么。在这种情况下,我需要只允许上传图片,比如 png、jpg/jpeg 大小不超过 2mb。

Busboy 给了我 MIME 类型、编码和其他详细信息,但不确定这是否足够可靠,或者我应该使用mmmagick 之类的东西。这些解决方案的安全性和可靠性如何?任何指针将不胜感激。

标签: javascriptnode.jssecuritylambdabusboy

解决方案


OWASP 对此有一个部分有一些想法,无论如何我发现保护图像上传的最佳方法是转换它,期间,如果你可以转换它是一个图像,你确定任何附加信息(代码,隐藏数据等)在转换过程中被删除,如果你不能它不是图像。

另一个优点是您可以剥离 exif 信息,添加一些数据(例如水印)等


推荐阅读