繁体   English   中英

如何使用s3存储桶URL安全访问应用程序中的文件

[英]How to securely access a file in the application using s3 bucket URL

在我的应用程序中,我们必须使用直接s3存储桶url在图标单击时在新选项卡中打开一些pdf文件,如下所示:

http://MyBucket.s3.amazonaws.com/Certificates/1.pdf?AWSAccessKeyId=XXXXXXXXXXXXX&Expires=1522947975&Signature=XXXXXXXXXXXXXXXXX

我觉得这有些不安全,因为用户可以看到存储桶名称, AWSAccessKeyIdExpirationSignature 这仍然被认为是安全的吗? 还是有更好的方法来解决这个问题?

允许用户看到这些参数不是问题,因为;

  1. AWSAccessKeyId可以是公共的(不要与SecretAccessKey混淆)
  2. 到期并使用您的SecretAccessKey签名,因此没人能操纵它(aws会针对您的SecretKey对其进行验证)
  3. 由于您没有公共对象,而且存储桶本身也不是公共的,因此知道用户存储桶名称的用户可以使用它-您将始终需要有效的签名来访问这些对象。

但是我有两个建议给你; 1.使用您自己的域,因此看不到存储桶(如果使用CloudFornt,则可以使用AWS提供的免费SSL),2.使用HTTPS而不是纯HTTP。

并且,如果出于任何原因您绝对不希望用户看到AWS参数,那么我建议您通过自己的API代理对S3的访问。 (尽管我认为这是不必要的)

我看到您使用http访问(没有SSL)。 您可以使用S3对多个域进行虚拟托管。

https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html

并根据您的域创建签名的URL,您一切顺利。

如果使用SSL,则可以使用Cloudfront

并将Cloudfront原点配置为指向您的S3存储桶。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM