1

我使用 Amazon S3 存储我网站的图像。我有一个存储桶策略,可以阻止其他网站盗链我的图片。

为了让它发挥作用,我在 S3 中将文件权限设置为“私有”,然后存储桶策略只允许访问我的网站。

这很好用,但是因为文件是“私有的”,所以我不能直接在浏览器中查看图像,这是我想要允许的。

这是政策

{
  "Version": "2008-10-17",
  "Id": "preventHotLinking",
  "Statement": [
    {
      "Sid": "1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::mybucket/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "http://mydomain.com/*",
            "http://www.mydomain.com/*"
          ]
        }
      }
    }
  ]
}

所以,总结一下:

  • 文件本身设置为私有
  • 上述政策允许图像显示在域“mydomain.com”的页面上,但不允许显示在“someoneelsesdomain.com”的页面上

不过,这也会阻止直接访问,因此将http://jbtestyt.s3.amazonaws.com/archie.jpg粘贴到浏览器中不会显示图像(因为它是私有的)。

但我希望显示图像以供直接访问。

可能的解决方案是公开文件,然后拒绝除我列出的所有推荐人之外的所有推荐人?但我不确定,也找不到类似的东西。

提前谢谢了。

4

1 回答 1

0

我推断您正在寻找“本机”S3 解决方案,所以就到这里。仔细想想,盗链本质上就是“直接访问”文件。因此,“文件本身设置为私有”将始终确保(至少在 AWS 上)无论如何您都无法直接访问它。这是在 S3 上设计的。您建议将推荐人列入白名单可能是您单独使用 S3 完成此任务的唯一直接方法。

于 2013-02-25T11:55:38.583 回答