Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 防止直接从amazon s3下载音频文件_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 防止直接从amazon s3下载音频文件

Amazon web services 防止直接从amazon s3下载音频文件,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我在Amazon S3上存储了音频文件,这些文件可以通过基于web的音乐播放器应用程序和移动应用程序访问。即使是未登录的用户也应该能够访问音乐。但是我不希望人们使用链接下载内容。这可以在s3中完成吗 谢谢您可以基于HTTP引用限制访问。它不是防弹的(推荐人可能会被欺骗),但它会阻止随意下载 您可以使用bucket策略来限制referer的可能值 本页上有一个示例(向下滚动一点) 下面是他们的例子: { "Version":"2008-10-17", "Id":"http referer

我在Amazon S3上存储了音频文件,这些文件可以通过基于web的音乐播放器应用程序和移动应用程序访问。即使是未登录的用户也应该能够访问音乐。但是我不希望人们使用链接下载内容。这可以在s3中完成吗


谢谢

您可以基于HTTP引用限制访问。它不是防弹的(推荐人可能会被欺骗),但它会阻止随意下载

您可以使用bucket策略来限制referer的可能值

本页上有一个示例(向下滚动一点)

下面是他们的例子:

{
  "Version":"2008-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests originated from www.example.com and example.com",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{
          "aws:Referer":[
            "http://www.example.com/*",
            "http://example.com/*"
          ]
        }
      }
    }
  ]
}

您还可以使用过期的签名URL,这将阻止人们从其他网站链接到您的内容。

想到一种情况:

当您的音乐播放器应用程序想要播放某些内容时,它必须向您的后端请求MP3的URL。您的后端可以在将来生成“Expires”参数[1]设置为10秒的URL

这样,您的后端返回的URL只能使用10秒钟,这应该足以让音乐播放器从S3开始下载

当然,如果用户在10秒钟的窗口中看到某种HTTP嗅探器中的URL并开始下载,则可以下载该文件

但是,没有防弹的方法来保护用户不让他/她的手接触到他们设备访问的内容。如果内容被传送到一台设备上,总有一种方法可以让足够多的技术人员接触到它

p、 提醒一下,如果你的MP3播放器支持搜索(特别是通过发送另一个HTTP范围请求进行搜索),你必须从你的后端重新获得一个新的URL,其中包含刷新的“expires”参数


[1]

我也遇到了这一要求,并对如何实现这一点有了更为更新的答案

在bucket的“权限”选项卡上,选择“bucket策略”按钮并填写以下代码:

{
    "Version": "2012-10-17",
    "Id": "Policy1542209806458",
    "Statement": [
        {
            "Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::your-bucket-arn/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [
                        "http://yourdomain.com/*"
                    ]
                }
            }
        }
    ]
}
这将只允许来自您的域的具有referer的请求。请注意设置
资源
字段并更改允许的
aws:Referer
列表


这仍然可以被欺骗,但它是直接链接S3对象的一个简单障碍。

让我看看我是否得到了它:你有一个Web应用程序可以访问音乐并将其流式传输到你的客户端(浏览器、应用程序等)?如果是这样,您可以在S3上对内容进行私有化,并让您的应用程序通过AWS/密钥访问内容。