【问题标题】:AWS policy to prevent hotlinkingAWS 防止盗链的政策
【发布时间】:2020-11-08 18:14:20
【问题描述】:

我正在尝试在 S3 上进行设置以防止盗链。

我从这里得到了建议:How do I prevent hotlinking on Amazon S3 without using signed URLs?

还有这个:https://kinsta.com/blog/hotlinking/

但是,我无法让它工作。

首先,我阻止对存储桶的所有公共访问,因此“权限”选项卡上的设置如下:

我设置了这样的政策:

{
    "Version": "2008-10-17",
    "Id": "HTTP referer policy example",
    "Statement": [
        {
            "Sid": "prevent hotlinking",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "http://example.co.uk/*",
                        "http://www.example.co.uk/*",
                        "https://example.co.uk/*",
                        "https://www.example.co.uk/*",
                        "http://localhost/01-example/*"
                    ]
                }
            }
        }
    ]
}

但是,当我尝试从引用站点访问存储桶中的内容时,我看不到 S3 内容。

我做错了什么?

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    我阻止对存储桶的所有公开访问,因此“权限”选项卡上的设置是这样的。

    这就是它不起作用的原因。您的策略允许公共/匿名访问 ("Principal": {"AWS": "*"}),但同时您明确“阻止所有公共访问”。您必须启用公共访问权限。来自docs

    在您使用存储桶策略向匿名用户授予只读权限之前,您必须为您的存储桶禁用阻止公共访问设置。

    【讨论】:

      【解决方案2】:

      阻止公共访问选项将覆盖您正在使用的任何其他配置,因此您的存储桶策略将不会生效。

      要让您的策略发挥作用,您需要禁用此功能,您可以选择启用多个选项以防止对存储桶策略进行进一步更改。

      在您的政策的相关说明中,Referer 标头可以被伪造以仍然访问这些资产,因此不应将其视为灵丹妙药。

      另一种使用的解决方案是使用 S3 签名 URL,或者查看在 S3 存储桶前使用 CloudFront distribution,然后使用 signed cookie

      【讨论】:

        猜你喜欢
        • 2019-07-29
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        相关资源
        最近更新 更多