我使用一个名为images.example.com一个Amazon S3存储成功地通过CloudFlare的CDN使用URL一样提供内容:S3水桶的CloudFlare:防止盗链
https://images.example.com/myfile.jpg
我想防止盗链图片和其他内容购买只限于引荐域名:example.com,也可能是另一个我用作开发服务器的域名。
我已经尝试了水桶政策,无论是从特定域允许和拒绝来自任何域不是特定的域:
{
"Version": "2012-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "Allow get requests referred by www.example.com",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::images.example.com/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"http://www.example.com/*",
"http://example.com/*"
]
}
}
},
{
"Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::images.example.com/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://www.example.com/*",
"http://example.com/*"
]
}
}
}
]
}
为了测试这一点。我上传了不同的服务器上的一个小网页:www.notExample.com,我试图用热链接图像:
<img src="https://images.example.com/myfile.jpg">
但无论热链接的形象出现。
我也尝试以下CORS排除
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
这些都不一直在努力防止盗链。我尝试使用桶策略和CORS的组合(一个或另一个加上两者)来清除CloudFlare中的缓存文件,但没有任何效果。
这似乎是一个相对简单的事情要做。我究竟做错了什么?
感谢您的解释。我猜想在cloudflare的网站上使用s3的cloudflare文章与授权访问s3而不是限制访问有关。不幸的是,似乎热链接保护仅适用于图像,而不适用于自身托管的音频和视频文件,这是主要的热链接/带宽问题。 – dijon
我为您添加了一些替代选项。 –