使用Node和AWS Lambda保护图像上传

时间:2019-02-14 01:41:14

标签: javascript node.js security lambda busboy

我正在通过浏览器表单实现图像上传,并且正在使用AWS和NodeJS。过程是用户选择一个文件,提供其他信息,然后使用multipart/form-data将所有信息发送到后端。

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

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

然后我抓住这个base64endcoded_string并上传到S3,以便文件位于其中,并且我可以打开它,下载等。

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

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

1 个答案:

答案 0 :(得分:0)

OWASP对此有一个section的想法,无论如何,我发现保护图像上载的最佳方法是将其转换为句点,如果可以将其转换为图像,则可以确定如果您不是图像,则在转换过程中将删除所有附加信息(代码,隐藏数据等)。

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