在我的应用程序中,用户可以上传个人资料照片。使用预先签名的URL将图像直接发送到S3。
现在,让我们谈谈安全性。
这不安全吗?假设有人将文件从<select name="DataTables_Table" id='dataTable' aria-controls="DataTables_Table_6" class="form-control input-sm">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
<button onclick='selectOption("100")'>select 100</button>
<button onclick='selectOption("50")'>select 50</button>
<button onclick='selectOption("25")'>select 25</button>
重命名为file.pdf
。现在,由于扩展名,浏览器认为它是file.png
文件。
所以,问题是:S3是否以任何方式检测到mime类型,并且如果文件的mime类型不同于我们指定的文件类型,则可以拒绝文件?
答案 0 :(得分:0)
我认为对于保存图像,我们使用了putObject函数,而persigned url用于签名的图像路径,这一点都不重要。我认为您需要检查一下用户上传的文件类型,如果它可以接受的文件是MIME类型。之后,继续进行AWS。它可以节省您的应用程序响应时间。
答案 1 :(得分:0)
上载对象时,应用程序有责任提供正确的MIME类型。 S3不对有效负载做任何解释。
浏览器不应基于文件的扩展名来解释文件,而应仅使用Content-Type
响应头中的MIME类型-S3会将其设置为创建对象时指定的任何内容。