Php 如何在不暴露MP3 URL的情况下通过web传送音乐(渐进/下载)(即使在webkit浏览器中)

Php 如何在不暴露MP3 URL的情况下通过web传送音乐(渐进/下载)(即使在webkit浏览器中),php,javascript,html,flash,actionscript-3,Php,Javascript,Html,Flash,Actionscript 3,我想能够提供音乐/mp3使用flash播放器,但我想让它,使mp3文件不能被嗅探。。。i、 你不能使用safari,firebug等等。使用“活动”窗口查找mp3位置。我没有流媒体服务器。有什么想法吗 如果我使用流媒体服务器,有没有关于如何(廉价)使用的建议?这或多或少是不可能的。因为客户端可以连接,所以它必须知道地址。你想隐藏源代码,但你不能完全隐藏它,我想最简单的方法是使用某种浏览器插件,flash和java(正如你所建议的那样)会向服务器询问地址。请注意,仍然可以分析flash或java程

我想能够提供音乐/mp3使用flash播放器,但我想让它,使mp3文件不能被嗅探。。。i、 你不能使用safari,firebug等等。使用“活动”窗口查找mp3位置。我没有流媒体服务器。有什么想法吗


如果我使用流媒体服务器,有没有关于如何(廉价)使用的建议?

这或多或少是不可能的。因为客户端可以连接,所以它必须知道地址。你想隐藏源代码,但你不能完全隐藏它,我想最简单的方法是使用某种浏览器插件,flash和java(正如你所建议的那样)会向服务器询问地址。请注意,仍然可以分析flash或java程序,因为浏览器仍然需要下载.swf文件


另一种方法是使用一次性URL,服务器提供的URL只能使用一次。它仍然是“可嗅探”的,如果在客户端连接之前被拦截,它仍然可以被利用。

如果你正在向用户的计算机发送mp3,那么你正在向用户的计算机发送mp3。我想你可以尝试某种加密,以使恢复MP3更加困难,但如果用户的计算机可以播放MP3,它也可以在播放之前将这些相同的位保存到磁盘。

你真的无法在HTTP中安全区分客户端。当他们记录整个流量时,他们总是可以重播交互,除非您使用一些加密机制

作为一种简单的方法,我将尝试只允许结合使用访问密钥的请求。访问密钥由您自己创建,并作为URI的参数发送到浏览器。当客户端发送请求时,仅当提供的访问密钥也有效时,请求才有效。在访问密钥中,您可以编码一些信息,如IP地址、时间范围、用户代理等

但正如我所说的,只要您最终通过HTTP公开数据,就没有100%安全的方法来保护您的数据。总有一种核心方法可以嗅探您的整个流量并以这种方式重建文件


访问密钥由AmazonS3使用,但也有用于nginx等Web服务器的插件

如果不使用诸如Flash之类的封闭技术,就不可能隐藏URL。您可以使用的另一种方法是将MP3保存在受密码保护的目录中,但通过绕过该保护的服务器端脚本将其传输到浏览器。这样,即使有人知道MP3文件的URL,他们也无法通过在web浏览器中输入地址来下载该文件。

使用流媒体,否则这是不可能的。Firebug、Opera的Dragonfly等显示浏览器运行的所有HTTP请求,无法隐藏它们。我经常从flash的“内部”下载媒体(例如YouTube),它每次都能工作,流媒体除外,因为那不是HTTP。

你可以使用双向加密


将加密的URL传递给音频播放器,然后让播放器对其进行反向加密。虽然不是100%安全,但可能会有所帮助。

使用套接字服务器并隐藏连接。我认为像electroserver这样的东西应该做你想做的事情,它过去有一个免费的许可证,最多25个左右的用户,然后它只有几百个许可证。不太清楚ES4。。。。对于你的需求来说,这可能是过分的

不仅可以分析该程序,而且还有监控HTTP流量的程序,可以更轻松地捕获请求和回复。@Chris;当然,这就是为什么我总是说“地址”,它可能不是URL。如何访问数据并不重要,仍然可以分析程序并以这种方式访问。我使用了前面的建议,但仍然可以嗅出。我认为你后来的建议会奏效——一次性URL。你知道有哪些PHP软件包可以做到这一点吗?@JONYC:“一次性URL”与第三部分提到的访问键是一样的。这并不难,只需向客户端发送一个随机数,将其存储在php会话中,当请求到达时,检查它是否相同(可能以某种非平凡的方式进行转换以使其模糊),并将其从会话中删除为有效。即使使用Flash也没有帮助,因为终端用户足够聪明。Flash小程序可以反编译和分析,像Fiddler这样的程序可以让用户看到他们的机器和其他机器之间的所有HTTP流量。要么你使用HTTP,Fiddler会捕获它,要么你使用其他东西来处理所有问题——比如用户的防火墙阻止了你的非标准协议。你知道PHP中有访问密钥包吗?我试过了。。。它不起作用,因为人们可以使用Tampa、Safari活动窗口等工具嗅探HTTP地址。问题是,当音频播放器解密url时,它向服务器发出请求,然后客户端知道该url是什么。当然,这不是100%安全的方法。可以尝试加密音频/视频流本身吗?然后,如果用户找到url,没有正确的键,数据就无法播放。我过去一直在下载流媒体,而mlb.com的flash播放器在linux上不起作用。只需使用javascript断点抓取一次性键,并将它们输入到我的媒体播放器。