代码之家  ›  专栏  ›  技术社区  ›  Peter D

如何让用户难以将MP3文件从我的网站保存到硬盘?

  •  1
  • Peter D  · 技术社区  · 15 年前

    我希望用户能够上传MP3,也可以通过嵌入页面的播放器播放。我知道通过直接从计算机输出中录制音频来阻止专用用户复制音频是不可能的,但我想让用户很难或不可能只复制一个URL并粘贴它,这样他们就可以直接访问数据。

    目前,我正在做的是:

    • 将MP3文件保存到Web服务器无法访问的目录中。
    • 使用headers将mime类型更改为text/html而不是audio/mpeg(我的swf播放器不在乎它只是读取数据)

    问题是提供数据的控制器的URL是可访问的。因此,如果用户查看页面源并复制粘贴地址栏中的URL,Web服务器会很高兴地将MP3数据发送给他们。

    有人对如何使这件事变得更困难有什么建议吗?谢谢。

    5 回复  |  直到 15 年前
        1
  •  2
  •   Aiden Bell    15 年前

    使用一个PHP脚本来屏蔽位置,因此

    http://www.site.com/files/foo.mp3
    

    变成

    http://www.site.com/files.php?fn=foo.mp3
    

    flash可能是下一步。也许它使用了某种形式的一次性ID来授权使用共享状态进行下载。您的会话ID将在此提供帮助。

    记住:Flash可能会在某个临时文件夹中保留缓存…我知道我曾经在一些播放器上找到/tmp/aiden sdjks/foo.mp3。在Flash中可能有一个更好的流式解决方案在后端采用另一种文件格式?

    至少这样可以阻止人们查找源代码和URL。除非他们努力反向工程播放器和写自己的吐出下载。

    默默无闻的安全 然而,这是一条危险的下坡路。只要有足够的努力,总会有人成功。看看bbciplayer是如何进行数据化的,可能会有所帮助。

        2
  •  2
  •   Arpit    15 年前

    直接连接到带有闪存的服务器上的文件称为渐进流。这使得Flash播放器在播放时从服务器加载整个文件。还有另一种解决方案:流媒体在播放期间的任何时候都只能将一小部分数据加载到用户计算机中。

    闪存最可靠的选择是为您的内容使用流服务器。闪存媒体服务器是一个选项,但这是一个产品,您可以购买或查找托管版本(如Akamai)。 如果您是一个较小的单元,那么有开放源码版本的媒体服务器,如Red5( http://osflash.org/red5 )

    不确定Windows Media Player或QuickTime Player,但我确信也有类似的解决方案

        3
  •  0
  •   s_hewitt    15 年前

    这取决于你想多努力。你可以使用javascript重写URL,基本的rot-13,希望人们不会费心去解码它。

    不过,我还没有尝试将javascript函数放入HTML对象src中。

        4
  •  0
  •   ankur    15 年前

    您应该将文件存储在受保护的目录中。我的主机服务(几乎是免费的语音)会自动为您设置此设置,您可以在CGI脚本(例如php)中检索文件,并写入临时文件或直接使用二进制文件。例如,我将访问我个人网站的简单列表存储在这个目录中,它不在web根目录的范围内。

        5
  •  -1
  •   nonopolarity    15 年前

    我不知道Flash播放器的解决方案是否可以做到,但它可能值得研究。