2013-02-25 140 views
7

我有存储在Amazon S3的音频文件,可以从基于网络的音乐播放器应用程序访问,也可以从移动应用程序访问。即使没有登录的用户也应该可以访问音乐。不过,我不希望人们使用链接下载内容。这可以在s3中完成吗?防止从亚马逊s3直接下载音频文件

谢谢

+3

让我看看,如果我得到了它:你有访问音乐和它流到客户端(浏览器,应用等)web应用程序?如果是这样,您可以在S3上使内容保密,并让您的应用通过您的AWS /密钥进行访问。 – Viccari 2013-02-25 15:32:17

回答

5

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

您使用存储桶策略来限制Referrer的可能值。

有此页面上的一个例子(稍微向下滚动)http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html

这里是他们的榜样:

{ 
    "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/*" 
      ] 
     } 
     } 
    } 
    ] 
} 

你也可以做签署的网址到期 - 这将阻止人们链接到您的内容来自其他网站。

1

一种情况浮现在脑海:

当你的音乐播放器应用程序要玩的东西,它要问你的后端的URL到MP3。您的后端可以生成将“将过期时间”参数[1]设置为10秒的URL。

这样,后端返回的URL只能用于10秒,这对于音乐播放器从S3启动下载应该足够了。

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

但是,没有防弹的方法来保护用户免受他们设备访问的内容的掌握。如果内容交付给设备,那么总是有足够的技术人员掌握它的方法。

p.s.如果您的MP3播放器支持寻找(特别是通过发送另一个HTTP范围请求来寻找),那么您必须重新获得一个新的URL,并在后端刷新“expires”参数。

[1] http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html