如何制作仅适用于特定播放器的嵌入视频

时间:2016-06-29 13:25:34

标签: php security video video-streaming drm

我正试图弄清楚如何使嵌入式视频只能由特定播放器读取。这是上下文:

我有一个托管视频流的网站。所有视频都是私密的。我的客户希望能够生成嵌入代码段,以便将此视频发布到他想要的任何网站。 (最终这意味着视频流不再是私有的,而是现在公之于众)。

现在这是棘手的部分。客户 希望这些视频可通过其网址进行扫描,这意味着如果视频网址为http://my.domain.com/videoToken,则点击该网址的任何机器人/用户/程序都无法看到该视频,播放器需要从同一个网址加载视频。

任何人都知道我有什么安全选项来实现这个?有一些DRM解决方案,对这个用例有任何帮助吗?

提前致谢。

PS:如果由于某种原因这是不可能的,那么下一个最接近的是什么?

3 个答案:

答案 0 :(得分:2)

如果我们在.htacces文件中添加类似的内容会怎么样?

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?my.domain\.com/.*$ [NC]
 RewriteRule .*\.(mp4|avi)$ http://www.my.domain.com/forbidden.mp4 [R,NC,L]
 # or serve a standard 403 forbidden error page
 # RewriteRule .*\.(mp4|avi)$ - [F,L]
</ifModule>

也许这不是解决方案,但可以开发使用mod_rewrite来控制基于HTTP_REFERER的视频访问的想法。

答案 1 :(得分:2)

只是为了说清楚,你的客户似乎想要;

  1. 能够将视频嵌入任意网页并成功加载,而
  2. 任意用户无法通过网址加载/查看相同的视频。
  3. 这两个要求本质上是矛盾的。任何嵌入式代码/元素都必须从客户端的浏览器向您的服务器发出请求,因此您将无法判断给定请求是来自加载嵌入视频的用户,还是来自尝试下载的bot /脚本/用户直接来自URL的内容。 @ernestortiz建议的方法可以防止随意浏览的用户和网络抓取工具绊倒您的视频(如果您有一个允许的推荐人的白名单,但这是一个完全不同的问题),但非恶意用户可能永远不会意外偶然发现你的视频,非恶意机器人会尊重robots.txt。恶意用户可以伪造他们的引用者标题,并且可以轻松配置恶意僵尸程序来执行相同操作。

    问题的关键在于,如果没有嵌入视频的每个站点的后端支持,您将不得不使用嵌入式代码分发访问视频所需的代码,这样任何攻击者都会能够访问它。因此,攻击者会确切知道如何规避您开发的任何保护措施;你正在为他们提供这样做的概念验证代码。

答案 2 :(得分:2)

除非你有黑名单,否则我无法弄清楚如何阻止你的选择,但是你可以有一个添加/更改某些参数的脚本,所以当机器人使用嵌入代码废弃网站时,网址不完整。

我用youtube做了一个例子:

<强> JS

$('#embed').click(function(e){
  e.preventDefault();

  $(this).remove();

  var src = $('iframe').attr('src');

  $('iframe').attr('src', src + 'OAxm_GSM7L4?autoplay=1');

});

<强> HTML

<div id="player">
<div id="embed"></div>
<iframe width="420" height="315" src="https://www.youtube.com/embed/" frameborder="0" allowfullscreen></iframe>
</div>

<强>演示 https://codepen.io/anon/pen/bZAvYZ