22

有什么方法可以在不使用签名 URL 的情况下防止 Amazon S3 上的热链接?

4

7 回答 7

25

您需要一个存储桶策略,既允许来自您的域的引用者,又拒绝不来自您的域的引用者。我发现如果您不包含明确的拒绝,图像可以被热链接 - 许多指南和示例只是给出允许策略并且没有提及拒绝部分。

这是我的政策,只需将 BUCKET-NAME 和 YOUR-WEBSITE 更改为您自己的详细信息:

{
  "Version": "2008-10-17",
  "Id": "",
  "Statement": [
    {
      "Sid": "Allow in my domains",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET-NAME/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "http://www.YOUR-WEBSITE.com/*"
          ]
        }
      }
    },
    {
      "Sid": "Deny access if referer is not my sites",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET-NAME/*",
      "Condition": {
        "StringNotLike": {
          "aws:Referer": [
            "http://www.YOUR-WEBSITE.com/*"
          ]
        }
      }
    }
  ]
}
于 2013-02-10T12:54:14.647 回答
12

通过设置正确的 S3 存储桶策略,您可以添加引用策略以防止盗链。

http://s3browser.com/working-with-amazon-s3-bucket-policies.php

于 2011-09-20T21:12:21.620 回答
3

我使用 Apache RewriteMap 重新映射相关链接以选择文件扩展名 - *.jpg、*.gif、*swf、*.fla 到 Cloudfront。基本上使您的图像的网址显示为您网站的相对链接。它并不能完全阻止 S3/cloudfront url 的发现,只是为可能的小偷增加了一层难度。

可能值得一试,使用上述方法通过 htaccess 应用热链接限制。我自己没试过。

于 2009-08-08T07:39:16.030 回答
2

在他们的官方文档中

更改examplebucket为您的存储桶名称和example.com您的域。

"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/*"]}
    }
  }
]
}
于 2016-09-16T02:55:18.720 回答
1

这里有一个很好的教程。请务必查看评论,因为网站代码中有一个空格字符会导致解决方案不起作用。

于 2011-06-20T00:10:01.970 回答
0

盗链是亚马逊创建 Cloudfront 的原因之一。Cloudfront 要快得多。我写了一篇关于它的文章,你可以看看这里。

http://blog.sat.iit.edu/2011/12/amazon-aws-s3-vs-cloudwatch-performance-grudgematch/

编辑:S3 和 Cloudfront 都使用相同类型的存储桶策略来确保请求来自正确的 url。Cloudfront 仍然更快。

于 2011-12-29T16:50:40.550 回答
-2

并不真地。您可以通过它运行 EC2 实例和代理。

于 2009-06-04T06:17:09.347 回答