为了优化我的服务器使用情况,我将HTML
(~1000)的图像(~500)和呈现SEO
文件移动到S3
存储&它运作得很好但是,我担心发生DDoS
攻击,最终会花费我很多钱,因为亚马逊对每{{}}}请求收费。
我做了一些关于如何防止这种情况的研究,并发现GET
有一个CORS
配置选项。
我尝试了,但不幸的是,它似乎没有用。仍然可以从任何S3
我做错了什么?
更新:
还尝试设置存储桶策略:
答案 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/*"]}
}
}
]
}
伪造推荐人是相对容易的,但这通常应该给你你想要的东西。