我正在通过浏览器表单实现图像上传,并且正在使用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的东西。这些解决方案的安全性和可靠性如何? 任何指针将不胜感激。
答案 0 :(得分:0)
OWASP对此有一个section的想法,无论如何,我发现保护图像上载的最佳方法是将其转换为句点,如果可以将其转换为图像,则可以确定如果您不是图像,则在转换过程中将删除所有附加信息(代码,隐藏数据等)。
另一个优点是您可以剥离exif信息,添加一些数据(例如水印)等