codeigniter 允许播放网站中的mp3文件,但禁止从直接链接下载

gfttwv5a  于 2023-03-21  发布在  其他
关注(0)|答案(2)|浏览(263)

我有一个用于播放和下载mp3文件的codeigniter项目。用户和管理员可以从前端和后端播放mp3文件,但用户不应该能够下载这些文件,除非从下载控制器使用下载助手。这就是我目前所做的,我在sound目录中添加了htaccess文件,以防止直接下载,它的工作,但阻止用户播放mp3文件在所有。

<FilesMatch "\.(mp3)$">
Order allow,deny
Deny from all
</FilesMatch>

而且下载控制器工作正常,允许特定用户下载这些文件。如何编辑它,以允许播放该目录中的mp3文件,而不需要直接访问完整的下载路径?
我想从特定页面访问MP3文件来播放和下载它,并拒绝任何其他直接访问它。
请注意项目中的音频元素使用MP3文件的绝对路径来播放它。我甚至尝试使用它的相对路径,但没有播放太多

svmlkihl

svmlkihl1#

我有个主意
使用PHP文件作为MP3...
我知道这听起来很奇怪,但从技术上讲,PHP文件可以解释为任何文件类型
您的前端:

<audio controls>
  <source src="music.php?token=as5df65s1df" type="audio/mpeg">
</audio>

让我解释一下:当用户访问页面时,设置一个只能使用一次的访问令牌,在src上设置它,然后在会话中设置它
x一个一个一个一个x一个一个二个x
这将执行以下操作:当用户访问页面时,单击“play”,它会工作,因为令牌已使用当用户访问音频src页面时,未设置get令牌,拒绝访问当用户访问音频src页面时,get已在初始加载时加载,因此已过期如果有人使用inspect查看src文件,然后右键单击并保存源,则令牌已使用,拒绝访问
这不是一个防弹系统,但它的dang好一个平均的网站
如果是有效的播放,则php文件将显示为mp3文件。如果不是有效的播放,则显示为php文件并拒绝访问
你也可以把mp3文件放在公共文件夹之外,这样只有php文件阅读器可以访问它们,客户端将永远看不到.mp3文件,如果你决定把mp3文件放在公共视图中,他们将不得不猜测路径来查看它。
我的建议是使用JS音频API,每次你想播放一首歌,创建一个新的音频对象,并通过 AJAX 获得一个新的令牌
注意:在获取新令牌时,请使用POST或get以外的任何方法,我们希望避免客户端手动转到该路径并获取令牌

vybvopom

vybvopom2#

嘿,那根本不起作用!如果歌曲正在播放,我可以通过源复制并直接在浏览器中粘贴音频播放器源网址来并行下载它...
防止播放器播放相同的来源与相同的id两次将是答案!

相关问题