【问题标题】:prevent image hotlinking but allow direct access防止图片盗链但允许直接访问
【发布时间】:2013-02-25 21:06:40
【问题描述】:

我使用 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 粘贴到浏览器中不会显示图像(因为它是私有的)。

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

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

非常感谢。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-02
      • 2023-03-18
      • 2022-10-14
      • 2020-05-04
      • 2012-05-23
      • 2011-08-11
      • 2016-10-24
      • 1970-01-01
      相关资源
      最近更新 更多