我想向我的s3桶提供预付费网址,并提供有效期限..net sdk很好地生成了这些网址,但看着它们让我有点担心:
https://s3.amazonaws.com/upload_youtipit/myfile?AWSAccessKeyId=**MYACCESSKEY**&Expires=1317924047&response-content-disposition=attachment;filename=feedback.jpg&response-content-type=image/jpeg&Signature=podKJSrNeFel6%2B0aOneb342H5GA%3D
Run Code Online (Sandbox Code Playgroud)
为什么需要将我的(公共)AWSAccessKey放入Url?这不应该保密吗?我知道这不是秘密,但我仍然觉得在公开场合露出它感觉不舒服.
有多少人拥有我的公钥,可以猜测/暴力破解我的私钥?
我的后端是一个 nodejs 应用程序,我希望用户将图像上传到 Amazon S3 存储桶。
从我的服务器运行:
const s3 = new AWS.S3({
params: {
Bucket: bucket
}
});
app.get('/api/images/signed-url', authMiddleware, (req, res) => {
s3.getSignedUrl('putObject',
{ ContentType: 'image/jpeg', Key: uuid() + '.jpeg' },
(_err, url) => res.send({ signedUrl })
})
Run Code Online (Sandbox Code Playgroud)
然后从我的浏览器客户端上传到该端点
该网址如下所示:
https://my-s3-bucket.s3.ap-southeast-2.amazonaws.com/0050db00-c64c-419a-83c2-e8615120f458.jpeg?AWSAccessKeyId=MY_ACCESS_KEY&Content-Type=image%2Fjpeg&Expires=1625365030&Signature=1ebnshTgeMKoLMAH%2Bi2FLletsAU%3D
Run Code Online (Sandbox Code Playgroud)
鉴于此 URL 包含 my MY_ACCESS_KEY_ID,与客户共享是否安全?我不分享我的秘密(显然),但它是等式的一半。