使用Node和AWS Lambda保护图像上载
我正在通过浏览器表单实现图像上传,我正在使用AWS和NodeJS。过程是用户选择一个文件,提供额外的信息,然后使用multipart/form-data
将所有信息发送到后端。
这很有用,所以有效负载通过API网关---> Lambda,这个lambda上传到S3存储桶。我正在使用busboy来处理多部分数据并最终得到包含从前端发送的所有数据的漂亮的JSON对象,例如:
{
userName: "Homer Simpson",
file: base64endcoded_string,
}
然后我抓住这个base64endcoded_string
并上传到S3所以文件就在那里,我可以打开它,下载等。
现在,显然我不相信来自前端的任何输入,我想知道什么是确保发送文件不是恶意的最佳方法。在这种情况下,我需要允许仅上传图像,比如png,jpg / jpeg,最大可达2mb。
Busboy给我MIME类型,编码和其他细节,但不确定这是否足够可靠或我应该使用像mmmagick或其他东西。这些解决方案的安全性和可靠性如何?任何指针都将非常感激。
回答如下:OWASP有一个section有一些想法,无论如何我发现保证图像上传的最佳方法是转换它,期间,如果你可以转换它是一个图像,你确定任何附加的信息(代码,隐藏数据等)在转换过程中被删除,如果你不能它不是图像。
另一个优点是你可以删除exif信息,添加一些数据(例如水印)等
使用Node和AWS Lambda保护图像上载
我正在通过浏览器表单实现图像上传,我正在使用AWS和NodeJS。过程是用户选择一个文件,提供额外的信息,然后使用multipart/form-data
将所有信息发送到后端。
这很有用,所以有效负载通过API网关---> Lambda,这个lambda上传到S3存储桶。我正在使用busboy来处理多部分数据并最终得到包含从前端发送的所有数据的漂亮的JSON对象,例如:
{
userName: "Homer Simpson",
file: base64endcoded_string,
}
然后我抓住这个base64endcoded_string
并上传到S3所以文件就在那里,我可以打开它,下载等。
现在,显然我不相信来自前端的任何输入,我想知道什么是确保发送文件不是恶意的最佳方法。在这种情况下,我需要允许仅上传图像,比如png,jpg / jpeg,最大可达2mb。
Busboy给我MIME类型,编码和其他细节,但不确定这是否足够可靠或我应该使用像mmmagick或其他东西。这些解决方案的安全性和可靠性如何?任何指针都将非常感激。
回答如下:OWASP有一个section有一些想法,无论如何我发现保证图像上传的最佳方法是转换它,期间,如果你可以转换它是一个图像,你确定任何附加的信息(代码,隐藏数据等)在转换过程中被删除,如果你不能它不是图像。
另一个优点是你可以删除exif信息,添加一些数据(例如水印)等