隐藏或加密文件的网址?

时间:2010-02-05 08:31:20

标签: php

大家好,谢谢你的时间。我想说的是,即使我不熟悉php,我还不知道所有内容,但我仍然缺乏一些能够解决其中一些问题的知识。

我目前的困境是:

我有一个包含用户制作歌曲的数据库,其中包含所有类型的信息,包括所述歌曲的位置。我有它工作的方式是我有一个PHP脚本,回放一个xspf播放列表文件供Flash播放器阅读,无论谁正在浏览歌曲。 (最好的部分是玩家不关心它是一个php文件,只要它收到正确的xml格式)。

问题是任何人都可以查看源代码(例如发现播放器使用xspf.php?= song_id = 10),php文件将以纯文本格式输出所有内容。我怎样才能隐藏或加密用户的mp3位置,但仍能使播放器正常工作?

我将来也会有用户能够下载曲目,但我想找到隐藏位置的方法,或者如果不是太难产生临时网址?分享你认为最好的解决这个问题。

再次感谢任何回复!

4 个答案:

答案 0 :(得分:5)

也许播放器也不关心文件的扩展名。您可以将mp3条目放入播放列表,其中url类似于play.php?songid = some_encoded_value。

然后在play.php中,您必须验证用户是否拥有有效会话。您还可以记录歌曲(如果生成)可用于访问歌曲的次数 - 设置此1或2?但是根据玩家的行为(断开连接的多个请求等),这可能不是最安全的想法,但通常应该没问题。

但请注意,想要下载歌曲的高级用户/开发人员仍然可以或多或少地进行黑客攻击。解决方案是将编码到播放器中的歌曲流式传输,播放器将解码。

然后可以解密flash播放器中的解码器算法等。

你工作的越多,你就越安全,但绝对安全是不可能的。

编辑:songid方案自然需要一些实际的songid和真实的mp3文件之间的映射表。映射可以在会话存储器中,但最好是在数据库中。 play.php文件将使用readfile函数(或类似函数)在输出上输出歌曲。或者,mp3文件也可以二进制blob存储在数据库中。

答案 1 :(得分:2)

我不懂PHP,但从概念上讲,我建议如下:

  1. 使用一些特定于当前用户会话的加密密钥,并将其传递给xspf.php文件。
  2. 将MP3文件的直接位置存储在生成的XML中,但使用PHP文件(用户生成的,会话相关密钥传入 - 然后验证)为服务MP3文件到Flash插件,并将MP3文件保存在目录中,可以通过静态和公共URL访问(理想情况下,在Web根目录之外)。

答案 2 :(得分:1)

我通过链接到php脚本来限制对文件的访问,该脚本检查用户是否有权访问该文件,如果用户有权访问该文件,则使用readfile()回显该文件。然后,您可以将该文件保存在无法通过URL直接访问的目录中。

答案 3 :(得分:1)

不要打扰。考虑Flash Player落后于代理的情况。无论如何,您将看到代理中的每个URL。要自己查看,请使用Fiddler(免费工具,充当代理并显示HTTP流量)。