Php 隐藏或加密文件的URL?
大家好,谢谢你们抽出时间。我想说的是,尽管我不是php高手,但我还不知道所有的事情,我仍然缺乏一些知识来解决其中的一些问题 我目前的困境是: 我有一个数据库,里面有用户制作的歌曲,有各种信息,包括所说歌曲的位置。我让它工作的方式是我有一个php脚本,它回显xspf播放列表文档,供flash播放器为浏览歌曲的人阅读。(最好的部分是,只要它接收到正确的xml格式,播放器就不在乎它是否是php文件) 问题是任何人都可以查看源代码(例如,发现播放器使用xspf.php?=song_id=10),php文件将以纯文本输出所有内容。如何对用户隐藏或加密mp3的位置,但仍能使播放器正常工作 我还将在未来让用户能够下载曲目,但我想找到一种隐藏位置的方法,或者如果不太难的话,生成一个临时url?一定要分享你认为解决这个问题最好的方法Php 隐藏或加密文件的URL?,php,Php,大家好,谢谢你们抽出时间。我想说的是,尽管我不是php高手,但我还不知道所有的事情,我仍然缺乏一些知识来解决其中的一些问题 我目前的困境是: 我有一个数据库,里面有用户制作的歌曲,有各种信息,包括所说歌曲的位置。我让它工作的方式是我有一个php脚本,它回显xspf播放列表文档,供flash播放器为浏览歌曲的人阅读。(最好的部分是,只要它接收到正确的xml格式,播放器就不在乎它是否是php文件) 问题是任何人都可以查看源代码(例如,发现播放器使用xspf.php?=song_id=10),php文
再次感谢您的回复 可能玩家也不关心文件的扩展名。您可以使用类似play.php?songid=some_encoded_值的url将mp3条目放入播放列表中 然后在play.php中,您必须验证用户是否拥有有效的会话。您还可以记录songid(如果生成)可用于访问歌曲的次数-设置为1或2?但根据玩家的行为(断开连接时的多个请求等),这可能不是最安全的想法,但通常应该是可以的 然而,请注意,想要下载歌曲的高级用户/开发者可以或多或少地进行黑客攻击。一个解决方案是将编码的歌曲流式传输到播放器中,播放器将在那里解码 但是flash播放器中的解码算法可以被破译,等等 你工作得越多,你就越安全,但绝对安全是不可能的
编辑:songid方案自然需要一些实际songid和实际mp3文件之间的映射表。映射可以在会话内存中,但最好在数据库中。php文件将使用readfile函数(或类似函数)在输出端输出歌曲。或者,mp3文件也可以以二进制blob形式存储在数据库中。我不懂PHP,但从概念上讲,我建议如下:
我通过链接到一个php脚本来限制对文件的访问,该脚本检查用户是否有权访问该文件,并使用用户是否有权访问该文件来回显该文件。然后,您可以将文件保存在一个无法通过URL直接访问的目录中。不用麻烦了。考虑Flash播放器在代理背后的情况。无论如何,您都会在代理中看到每个URL。要亲自查看,请使用Fiddler(免费工具,充当代理并显示HTTP流量)。但至少它不必是一个可以与全世界共享的直接下载链接。你是什么意思?Fiddler中显示的URL可以与世界共享。是的,但是如果URL包含与会话相关的标识符,带有用户身份验证和时间戳,并且在提供文件之前执行验证检查,那么这只适用于正确登录的用户。其他任何人都会得到一个登录屏幕或一些错误页面-这取决于PHP页面中的检查是如何实现的。我真的不在乎他们是否下载歌曲,因为他们将能够,这只是我不想暴露的文件结构。我还想感谢你的部分回答,因为它有助于了解玩家也不关心文件的扩展名。我所做的只是添加了一个额外的变量,使歌曲可以通过readfile()下载,而无需公开任何内部目录。谢谢你,罗恩!谢谢,readfile()成功了。这是与我的问题最接近的答案,尽管如果不是每个人的话,我不可能把所有的部分放在一起。谢谢你的建议,我希望我能选择多个答案!