use*_*227 5 security amazon-s3 amazon-web-services
我的AWS S3存储桶中有一个映像.通过将AWS URL放在<img>标记中,将此图像包含在我的网站中是否安全?该URL包括诸如"Amz-Signature","Amz-Credential"和"amz-security-token"之类的参数.这些参数可以被恶意用于访问我的S3存储桶中的其他文件吗?
这是一个示例URL:
https://s3.amazonaws.com/MyBucketName/FileName.jpg?X-Amz-Date=20160126T141139Z&X-Amz-Expires=300&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Signature=Lots_of_letters_and_Numbers2&X-Amz-Credential=MYAMAZON_CREDENTIALS/20160126/us-east-1/s3/aws4_request&X-Amz-SignedHeaders=Host&x-amz-security-token=REALLY_LONG_SECURITYTOKEN
Run Code Online (Sandbox Code Playgroud)
或者,我可以使用AWS SDK从我的C#代码生成到期URL.就像是:
var expiryUrlRequest = new GetPreSignedUrlRequest
{
BucketName = WebConfigurationManager.AppSettings["AWSBucketName"],
Key = fileName,
Expires = DateTime.Now.AddHours(3)
};
Run Code Online (Sandbox Code Playgroud)
这会产生一个以"AWSAccessKeyId"作为参数的URL.
这些网址中的任何一个都可以安全地在我的网页中使用吗?在我的网站上使用它们会涉及哪些风险?
非常感谢您的宝贵时间.如果您需要其他信息或我不清楚,请告诉我.
编辑:为了进一步了解我的应用程序,用户正在将文件上传到S3存储桶.我正在使用SignalR通过在我的网页上显示来自S3的图像来确认图像在桶中,供用户查看.
不要公开桶.如果你这样做,那么user1可能会看到user2的上传文件.
您可以允许用户使用预签名URL在特定时间段内检索单个文件.
GetPreSignedUrlRequest生成你想要的用户下载文件的预标识的URL.<img>代码中使用该网址.使用这种技术是安全的:
GetPreSignedUrlRequest呼叫的一部分)URL使用散列技术来确保URL不能被修改,也不能滥用它来获取其他文件.
如果需要显示访问密钥ID,您可以(a)专门为从S3下载文件创建IAM用户,或者(b)在EC2实例上使用IAM角色生成预签名URL .
参考文献:
| 归档时间: |
|
| 查看次数: |
1834 次 |
| 最近记录: |