我有一个项目,客户将他的歌曲上传到网络,然后在网站上播放。
有许多工具允许下载各种媒体,即使它被认为是隐藏的等等。其中一个工具是Firefox的DownloadHelper插件。
如何阻止此类工具下载媒体文件?但是,我应该可以在前端自由使用这些文件用于促销目的。
提前致谢!
答案 0 :(得分:2)
答案 1 :(得分:1)
你做不到。如果他们可以看到/观看/听到它,通常它已经在用户的计算机上。
他们也可以随时录制他们的音频流。
也许尝试使用30秒样本或低比特率版本。
答案 2 :(得分:1)
有许多尝试阻止这种下载,要么将媒体文件切片成多个块,一次只流一个,要么在文件和客户端之间添加Flash层。像Hulu这样的服务也有阻止视频下载的强大实现。
一般而言,开发这种类型的系统非常耗时,并且通常需要大量的云容量才能实现。在一天结束时,无论如何都不会100%安全,也许最好通过额外的Flash工作或其他插件来限制他们的访问。
答案 3 :(得分:1)
1)RTMP而不是HTTP(即,从服务器流式传输音频/视频数据而不是下载文件);您将需要服务器上的FMS,Red5或类似软件;这仍然可以通过使用RTMP流媒体和/或线路输出记录器进行记录。
2)添加一些基于会话的唯一标识符,以便同一个URL只能访问一次文件(或RTMP情况下的流);相同URL的下一个请求将无效。例如,在您的PHP文件中,设置
$_SESSION['file_unique_stuff'] = rand(1000000, 9999999);
<a href='<?php echo "file.php?file_id={$file_id}&unique_stuff={$_SESSION['file_unique_stuff']}"; ?>'>file</a>
然后在将内容传递给客户端(file.php
)的文件中:
if ( empty($_GET['unique_stuff']) || empty($_SESSION['file_unique_stuff']) || $_GET['unique_stuff'] != $_SESSION['file_unique_stuff'] ) ) {
header("Status: 404 Not Found");
exit;
}
// session's "unique stuff" is validated and is not needed anymore
unset($_SESSION['file_unique_stuff']);
// pass file to client
//...
为获得最佳效果,请结合使用这两种方法。对每个文件执行此操作,即,您可能会有一系列“唯一内容”($_SESSION[$file_id]['unique_stuff']
)而不是单个值($_SESSION['file_unique_stuff']
)。
您还可以通过将file_id
链接到会话中的某个随机哈希值来完全隐藏$_SESSION[$hash] = $file_id
,即存储?hash={$hash}
并使用网址{{1}}。
这不是100%安全,但这是您在网络上可以做的最好的,因为没有办法确保用户不使用任何第三方工具。