停止服务下载安全 URL
Posted
技术标签:
【中文标题】停止服务下载安全 URL【英文标题】:Stop services from downloading secure urls 【发布时间】:2013-10-25 17:42:12 【问题描述】:我使用 amazon s3 通过 amazon s3 流式传输媒体,他们提供了一个有时间限制的安全 url,并且它的过期时间如下所示。
http://wp.video.s3.amazonaws.com/daisy_2x.jpg?AWSAccessKeyId=AKIAIDVCDVR32H7DCSNA&Expires=1382004775&Signature=gtYCQy2SAC44sEV6zDDTD0MZS%2Bs%3D
我发现,使用 Torch 浏览器,可以下载音频/视频。
有没有办法阻止这一切?
谢谢
【问题讨论】:
“他们”提供了一个安全的 URL...“他们”是谁?是的,可以下载该对象,直到链接过期……就是这样。您注意到该链接现在已经过期......并且永远不会再次工作。您希望将超时设置得足够短,以使除了授权用户之外的任何人都不会在时间到期之前获得链接。你在问什么? 他们 = Amazon S3。我问的是,即使我在流式传输安全音频文件(我不希望人们下载)时将到期时间设置为 5 分钟,是否可以停止用户通过火炬浏览器下载,人们仍然可以下载我的安全音频那时。我想问有没有其他方法可以锁定它?谢谢 【参考方案1】:我最初对您的问题感到困惑,因为我认为“嗯,当然如果您向他们提供指向 S3 存储桶中对象的签名 URL,他们可以下载文件。”
当您说“下载”时,我以为您的意思是“使用 HTTP 获取对象”,但您使用它的意思是“下载并保存到文件”——这是部分你想阻止。
您提到了 Torch,这似乎使人们更容易捕获指向媒体内容的链接,但任何拥有您的对象之一的签名 URL 的浏览器都可以下载它。
因此,简短的回答是“可能不是”,尽管这取决于您现在使用的设置。从根本上说,正如我对您问题的最初反应所示,您文件的签名 URL 意味着您的文件是可下载的并且可以保存到文件中。
如果您使用某种自定义播放器发送或可以发送特定用户代理字符串,并且该播放器使用 https,您可以配置播放器以在请求中设置该值,然后添加存储桶策略禁止请求的条件,除非用户代理字符串(将浏览器标识到 Web 服务器)与特定值匹配。需要使用 https 的原因是 trivially simple 让浏览器更改其用户代理字符串以匹配您期望的任何内容,并且防止该字符串被发现的唯一方法是如果请求因为资源永远不会通过未加密的线路发送,这需要 https。
这确实是一个非常薄弱的机制,因为如果发现了神奇的价值,你就会回到你开始的地方,尽管它会在一定程度上限制你的资源的可访问性。
如果您没有使用自定义播放器,那么我不确定您为什么不希望这些文件可以下载。
想到的唯一其他机制是在将文件上传到 S3 之前将 DRM 应用于您的文件,这需要一个了解您正在使用的 DRM 格式的播放器。这就是音乐订阅网站rhapsody.com 的运作方式。您拥有下载的文件,但它们已加密,如果无法验证您是否仍是 Rhapsody 订阅者,您的播放器将不会播放它们。我不知道这种解决方案的成本、复杂性或兼容性是多少。
也许让这个问题相比之下显得微不足道的更大问题是,如果有人想要你的内容的副本,它doesn't take much ingenuity at all 会通过a hole that is impossible to plug 提取你的内容。
【讨论】:
感谢 Michael 的精彩回答;)我刚刚在其他一些论坛上发帖后重新审视了这个问题,亚马逊停止回复,我使用的音频播放器 jplayer 说了你必须处理的事情,我喜欢 drm 解决方案,但我可以想象用户会因为在任何设备上播放音乐的选择有限而感到非常沮丧。我想如果他们无论如何我可以用php做一些事情只允许下载一次曲目???以上是关于停止服务下载安全 URL的主要内容,如果未能解决你的问题,请参考以下文章
在服务内不停止下载文件(Not IntentService)