gpt4 book ai didi

post - s3 预签名 POST 中未强制执行内容类型

转载 作者:行者123 更新时间:2023-12-03 16:51:57 25 4
gpt4 key购买 nike

我目前正在使用 AWS javascript SDK 创建预签名的 POST。 (请注意,这个问题与预签名的 PUT/URL 无关,这是另一个 s3 功能)

https://github.com/aws/aws-sdk-js/

尝试创建预签名帖子时,我会执行以下操作:

const params = {
Bucket: 'myuniques3bucket',
Fields: {
Key: 'key1.png',
'Content-Type': 'image/png'
},
conditions: [
{bucket: 'myuniques3bucket'},
{key: 'key1.png'},
{'Content-Type': 'image/png'},
['content-length-range', 1024, 1048576], // 1KB to 10MB
{'x-amz-date': amzDate},
{'x-amz-algorithm': 'AWS4-HMAC-SHA256'},
{'x-amz-credential': `${process.env.AWS_ACCESS_KEY_ID}/20180820/us-east-2/s3/aws4_request`}
],
Expires: 300 // 300 seconds
}

s3.createPresignedPost(params, (err, data) => {
console.log(data);
});

我正在围绕不应该工作的上传过程进行测试。我发现这里没有强制执行内容类型,因为我可以使用其他内容类型发布参数上传其他文件类型。

我不清楚 JS SDK 是否为用户管理签名过程,或者我是否需要做一些特殊的事情来在签名中获取这些不同的 key 。

很明显,我可以做一些这样的事情,但不清楚我是否需​​要。不确定图书馆是否应该为我处理这个问题。

TLDR; 我需要做什么才能使用 js sdk 通过 s3 预签名 POST 激活内容类型验证?

任何帮助将不胜感激。

最佳答案

策略文档仅指定表单字段必须包含哪些内容,以便 S3 接受已签名的请求为有效——在这种情况下,表单必须声明内容类型为 image/png。以便 S3 将使用 Content-Type: image/png 存储对象.这种机制实际上并不验证对象本身的内容类型。 S3 没有办法做到这一点,JS SDK 也没有。

您可以在浏览器中的 JS 中执行此操作,也可以在上传后执行此操作,使用 S3 事件通知后台进程需要验证上传的内容。无论如何,对图像进行后期处理可能是一个很好的做法,因为您通常希望去除任何不适当的元数据,例如某些图像中包含的用于标识照片拍摄位置的数据。

关于post - s3 预签名 POST 中未强制执行内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51935747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com