问题 html5中的音频标签安全性


长版:

我使用html5音频标签在我的网站上播放mp3文件。使用Flash,我可以流式传输mp3并将其保护95%。

使用html5很容易找到mp3位置,只需从那里下载。即使我使用独特的哈希来保护它,也不难检查chrome中的网络选项卡并查看带有哈希的mp3网址。

我想知道是否有其他方法可以保护mp3免受破坏,如果它值得花时间。例如 乐队夏令营 确实生成了独特的哈希值,但下载mp3仍然非常容易。对于youtube,你有下载网站,可以处理flv流并翻录音频并以mp3格式保存给用户。

我能想到的第一层安全性是将mp3文件的扩展名改为.txt或其他常见格式。

95%的用户没有发现扩展名,因为它默认隐藏在Windows和Apple上。这将阻止前95%的用户发现并播放mp3文件。

简洁版本

任何建议,以防止用户在使用html5音频标签时窃取mp3文件。


4798
2018-03-11 23:44


起源

这是你的音乐吗?为什么不只是流式传输低质量的副本并使用独特的哈希来半保护它。 - shapeshifter
或者不时地在mp3中间窃听你的域名。 - shapeshifter
两个好的选择都要考虑。不同的艺术家让我有权在网站上播放音频。 - automaticoo
在这种情况下,我认为你最好用低质量的流和链接购买全品质的版本。 - shapeshifter
事情有进展 - 在那里检查我的答案 - marksyzm


答案:


有点。

Grooveshark向正在流式传输的MP3的服务器端脚本发送POST请求,这使得在不动态创建POST请求的情况下访问和欺骗非常困难 - 尤其是因为您必须尝试存储音频文件那是收集的。但是你可以使用新的AudioContext来帮助解决大多数现代平台......

我在HTML5Rocks.com中使用了一个很好的例子来改变使用的头文件,如下所示:

var dogBarkingBuffer = null;
// Fix up prefixing
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();

function loadDogSound(url) {
  var request = new XMLHttpRequest();
  request.open('POST', url, true);
  request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  request.responseType = 'arraybuffer';

  // Decode asynchronously
  request.onload = function() {
    context.decodeAudioData(request.response, function(buffer) {
      dogBarkingBuffer = buffer;
    }, onError);
  }
  //this is the encryption key
  request.send("key=98753897358975387943");
}

有关

正如你所看到的,我也发送了一个关键值,它也可能是公共/私人对的一部分。这应该让任何人试图干预 - 当然,除了简单地记录正在播放的MP3,但是在计算机内部或外部的任何环境中什么都可以阻止?


6
2017-07-01 13:01



不错的片段。这看起来非常可靠,肯定会阻止99%的普通用户窃取mp3 - automaticoo
谢谢 - 我很有兴趣尽快使用它,所以我很高兴我遇到了这个帖子,因为它帮助我解决了这个问题。道具去了groovehark和Alex Reidy的指针。 - marksyzm
抱歉,但是什么阻止我在Chrome控制台中看到资源并且可以访问它? - Snick
@Snick您可以每次发送一个唯一的流,并定期将其附加到音频流。此外,使用公共加密密钥意味着您只能执行一次定期握手,而不能共享链接。更重要的是,您可以执行每部分加密密钥。想象力有很多层次可以用来做,所以它更具有高水平的威慑力。 - marksyzm
啊,我知道,那将在服务器端请求一个活动的进程来处理每部分加密和流连接,对吗?我想这不适用于cdn'ed内容。 - Snick


简答

没有。

将音频文件重命名为.txt不会对您的mp3音频文件的安全性做任何帮助。如果有的话,它会引起更多问题,因为现在,你的mp3音频文件将以不正确的MIME类型发送,这可能会导致浏览器的内置音频播放器出现问题。

我能为您提供的最佳建议是:

  1. 确保检查REFERER http标头,确保它来自包含mp3播放器的页面。
  2. 使用唯一的哈希保护mp3文件。
  3. 不允许同一个哈希值下载两次*

*请注意,即使这样做也可能导致问题,例如,如果用户从缓存中重新打开选项卡,再次播放该文件,并且未缓存mp3文件,会发生什么?

最后,即使在你的mp3文件是IIS和Apache历史上受保护最多的mp3文件之后,最后是什么阻止我打开Adobe Audition并录制音频流?

虽然你对Bandcamp的MP3音频流是正确的,但是在购买专辑后,mp3的质量不如普通下载。

事实上即使谷歌对它的视频流没有任何适当的保护也应该说些什么。一家通过YouTube上的视频观看产生数十亿美元的公司,甚至无法制作(或更好地放置 - 没有费心去实施)保护其视频的任何可行方法。


8
2018-03-11 23:53



没错,重命名为txt是一种不好的做法,并且可能会遇到更多解决问题的问题。 - automaticoo
很好的答案,但谢天谢地事情已经取得了进展 - 请在下面查看我的答案 - marksyzm


查看 Grooveshark的HTML5网站。这很安全。播放歌曲后,将其注入URL栏,然后自己查看: javascript:alert(window.GS.audio.audio.src);。它不是那么简单 grooveshark.com/songs/song.mp3,不幸的是。


2
2018-04-27 04:08



拥有现代浏览器的人只需执行“alert(window.GS.audio.audio.src);”在调试面板中。 - automaticoo
要不就 window.GS.audio.audio.src 在这种情况下 - 如果您正在使用控制台,则无需警报 - ICoffeeConsumer
他们正在关机 - Tahir Yasin


你可以让MP3本身没有吸引力。一些想法:

  • 请勿在文件中包含专辑封面,专辑信息等(id3标签)。更好的是,用“此文件来自myMusicSite.com”之类的内容填写所有id3标记字段。

  • 将文件拆分成几个较小的部分,然后在浏览器中按顺序播放它们。必须下载所有单独的部分将使您的文件不那么有吸引力。您可能会遇到无间隙播放问题,但不确定支持的情况如何。

  • 编码并将其作为视频播放,可能带有您的徽标或视频流。结果文件不会大得多,尤其是如果你使用静态图像。这意味着用户无法轻松地在MP3播放器,手机等上播放您的文件。

  • 如评论中所述,在录音中轻声说出您的域名或网站名称几次。


0
2018-01-19 14:35