2012-01-27 154 views
3

我想阻止我的Cloudfront文件从特定域盗链。通过网上的例子和亚马逊自己的策略生成一个组合,我想出了这一点:我的Amazon S3存储桶策略有问题吗?

{ 
    "Version": "2008-10-17", 
    "Id": "http referer policy", 
    "Statement": [{ 
    "Sid": "Block image requests", 
    "Action": "s3:GetObject", 
    "Effect": "Deny", 
    "Resource": "arn:aws:s3:::mybucket/subdir/*", 
    "Condition": { 
     "StringLike": { 
     "aws:Referer": [ 
      "http://example.com/*" 
     ] 
     } 
    }, 
    "Principal": { 
     "AWS": "*" 
    } 
    }] 
} 

我发送的无效请求的文件中的mybucket子目录,然后几分钟后试图重新加载与图像referer头仍然发送(使用Chrome的开发工具进行验证)。使用Ctrl + F5进行了重新加载,并且响应标头中包含“X-Cache:来自cloudfront的Miss”,因此它肯定会获得最新版本的图像。

但图像仍然显示正常,并没有被阻止。策略生成器没有“aws:Referer”键的选项,但它在Amazon docs here中。我在这里做错了什么?

+0

您是如何真正允许CloudFront访问您的对象的(首先请参阅我的更新后的答案)? – 2012-02-02 00:09:51

回答

1

更新2

重新审视你的政策我想知道你是如何真正让你的对象摆在首位访问CloudFront的?你有没有偶然遵循例如Start Using CloudFront with Amazon S3您必须确保您的对象权限设置为为您的Amazon S3存储桶中的每个对象设置一切为公共

在这种情况下,由于同时存在三种不同的S3访问控制机制之间的交互作用,您可能会遇到相关的陷阱,这可能相当令人困惑。这是针对例如在Using ACLs and Bucket Policies Together

当你有分配到水桶的ACL和铲斗政策,亚马逊S3 确定帐户的访问权限,以亚马逊S3 资源时评估现有的亚马逊S3的ACL以及桶政策 。如果帐户有权访问ACL或策略 指定的资源,则它们可以访问请求的资源。

因此你需要你的ACL迁移到桶策略(即允许通过AWS否认之前CloudFront的访问:引用者),然后删除过于慷慨ACL。

祝你好运!


更新1

好了,现在用客户端缓存的出路,恐怕这将是不平凡(如明显的,当你搜索在AWS论坛aws:referer)因此,可能需要几次迭代(尤其是考虑到你自己已经研究过的话题):

  • 遇到的最常见的问题是leading whitespace error in the AWS documentation(这是特别讨厌的,因为一个简单的问题解决的文entation修复将弥补大量的时间浪费在代表用户和AWS技术支持人员的一致好评)
    • 你的政策不会出现这种问题,但是,给你消毒的真实域名,你可能已经在你的产品代码替换错误事实上?
  • 此外,重要的是要认识到HTTP referer标题不一定会变得可用,参见例如。 Referer Hiding(因此你的政策不会阻止恶意访问,无论如何,尽管这显然不是问题)
    • 你已经说过,您已验证它通过Chrome开发人员工具发送,所以这并不适用于任何(我提到它强调降低的安全级别)。

的政策看起来很好一见钟情 - 进一步挖掘到这个方向,虽然之前,我建议,以确保你实际上是绕过Chrome的成功缓存,这是notoriously less straight forward比使用人来自其他浏览器;尤其是Ctrl + F5只需重新加载页面,但不是Bypass the cache(至少不可靠)!

如记录有作为,你可以使用其他组合键的一个重新加载页面,并绕过缓存(包括第一个1个重装上阵后的混乱第二Ctrl + F5),但是,我建议促进的一个以下两种方式来代替:

  • Chrome的开发者工具提供了浏览专门的支持,而高速缓存 - 在工具箱面板的右下角是设置的齿轮图标,点击该触发与一个选项面板覆盖,其中包括这些你会发现选项禁用缓存根据部分网络
  • Chrome的Incognito modeCtrl + Shift + N保持谷歌浏览器保存有关您所访问网站,其截至今天(可能会发生变化随时课程)的信息似乎包括缓存的内容,饼干,DNS等作为预期,因此是一个更快,但现在不那么明确的选项。
+0

不,我已经在隐身模式和其他浏览器中进行了双重检查。 – DisgruntledGoat 2012-01-27 13:28:54

相关问题