【问题标题】:Prevent from listing Amazon s3 bucket content阻止列出 Amazon s3 存储桶内容
【发布时间】:2015-11-13 13:14:23
【问题描述】:

我对 Amazon s3 存储桶有类似的问题。 https://serverfault.com/questions/693815/how-to-stop-s3-from-listing-some-of-the-content

当我删除“列表”权限时它工作正常,存储桶内容不可见。但是当我通过 API 将一个项目上传到该存储桶时,“列表”权限再次被勾选,任何人都可以查看该存储桶的所有项目。

这是我将项目上传到存储桶的 PHP 代码

$this->s3->putObjectFile($path, $this->bucketName, $fileName, S3::ACL_PUBLIC_READ);

即使我上传了新项目,我也想保留取消勾选“列表”权限。我该怎么办?

【问题讨论】:

  • 您是说在您的测试中,使用公共读取 ACL 上传单个对象的行为会在存储桶属性下重新启用授予整个存储桶“所有人”的“列表”权限> 控制台中的权限,在您禁用后?
  • 是的.. 任何解决方案?
  • 嗯...不。那不应该发生。我无法通过存储公共对象来复制它。但是,从 REST API 文档来看,如果您有错误并调用 putObjectFile() 并将 $path 设置为空字符串(或者可能未定义),似乎可以切换整个存储桶的“列表”选项或者只是 / 取决于 SDK 行为)因为存储桶没有根对象——存储桶 is 是根对象,并且在根对象上设置 acl is i> 把它放在桶上。
  • 我不确定我错过了什么。我从undesigned.org.za/2007/10/22/amazon-s3-php-class 获得了 s3 类,我正在使用 $this->s3->putObjectFile($path, $this->bucketName, $fileName, S3::ACL_PUBLIC_READ);上传。这里 $path 正确传递,没有空或未定义。请帮我解决这个问题
  • Enable S3 logging on the bucket。然后,进行一些测试,等待新日志出现,然后查看它们。如果您看到记录了任何PUT /PUT /?acl 请求(没有对象键,只有/),那将是问题所在,您需要调查它们的来源,因为这是更改请求存储桶 ACL 应类似于日志中的内容。除非 S3 本身存在严重缺陷(这似乎不太可能),否则 something 似乎正在向您的存储桶发送此类请求,从而重置此值。

标签: php amazon-s3


【解决方案1】:

我已经通过使用标准库 (https://github.com/aws/aws-sdk-php) 解决了这个问题。现在它运行良好。 http://undesigned.org.za/2007/10/22/amazon-s3-php-class/ 似乎有些问题

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多