只在我的网站上允许S3文件

时间:2018-08-05 07:35:30

标签: amazon-s3

我只允许在我的网站上使用s3文件。他们应该能够从我的网站上下载文件。并非来自任何其他站点。请告诉我我该怎么做。

我尝试了存储桶策略和cros配置,但是没有用。

2 个答案:

答案 0 :(得分:1)

您可以使用CORS标头https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html限制来源,这只会阻止直接显示或处理的跨站点资源,而不是要下载的文件

作为解决方案-将S3存储桶设为私有(非公开),您的网站可以为S3资源生成带符号的到期(临时)网址 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html

有多个博客,仅以搜索为例

答案 1 :(得分:0)

您可以将存储桶策略编码为Restrict Access to a Specific HTTP Referrer

{
  "Version":"2012-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests originating from www.example.com and example.com.",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
      }
    }
  ]
}

但是,这是伪造的,因此它不是保证访问控制的方法。

如果您真的希望控制谁可以访问您的内容,则您的应用程序应验证用户身份(例如用户名/密码),然后生成有时间限制的 Amazon S3 Pre-签名的网址。这通常是您提供私人内容(例如个人照片和PDF文件)的方式。