为AWS S3设置CORS配置

时间:2017-07-12 10:30:07

标签: amazon-web-services amazon-s3 cors ddos

为了优化我的服务器使用情况,我将HTML(~1000)的图像(~500)和呈现SEO文件移动到S3存储&它运作得很好但是,我担心发生DDoS攻击,最终会花费我很多钱,因为亚马逊对每{{}}}请求收费。

我做了一些关于如何防止这种情况的研究,并发现GET有一个CORS配置选项。

我尝试了,但不幸的是,它似乎没有用。仍然可以从任何S3

访问文件

enter image description here enter image description here

我做错了什么?

更新:

还尝试设置存储桶策略:

enter image description here

1 个答案:

答案 0 :(得分:2)

CORS配置允许跨域请求。它不是限制文件访问的方法。

默认情况下,浏览器不允许跨域请求。例如,浏览器不允许example1.com提供的网页访问example2.com的内容。这样做是为了保护您的个人信息,例如尝试向Facebook打开iframe以访问您的个人Facebook内容的人。

但是,如果example2.com愿意允许此跨域请求,则可以添加跨原始资源共享(CORS)策略,该策略指出允许example1.com访问内容跨域方式。然后,网络浏览器将允许访问。

总结:您的网络浏览器正在控制CORS。 CORS策略只是告诉Web浏览器允许它。

请参阅:Cross-Origin Resource Sharing (CORS)

通过推荐人限制

但是,您的特殊要求似乎是您愿意从Amazon S3提供内容,但前提是它出现在特定网页上。例如,如果images.example.com所服务的页面正在请求,则仅显示来自example.com的图片。您可以通过在Amazon S3存储桶策略中指定推荐人来实现此目的。

来自Restricting 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/*"]}
      }
    }
  ]
}

伪造推荐人是相对容易的,但这通常应该给你你想要的东西。