是这样的,我开了一个网站,网站存放在一个普通的 VPS 上面,那肯定是不可能放视频的,流量都承载不起,更别说配置,然后朋友买了一个独服,机能完全过剩,所以打算做视频服务器,视频服务器用的是 Windows 系统, IIS~~然后放出来的视频链接都是直接放出来的 mp4 链接 那么问题来了,放出来的链接我能用,别人也能用,盗链这个问题怎么解决,主要是两边都不在同一个服务器上面,网站和视频必须要分开,因为我朋友平时需要折腾,动不动就炸鸡,视频能炸,网站不能炸,但是又要确保不能被盗链
就是能不能做到他发出来的链接指定只能我的站可以使用,其他人不能用呢。。。
1
bdbai 2016-04-23 16:07:55 +08:00 via Android
给视频服务端做 HTTP Referer 头过滤,防一些简单的盗链;网站那里可以给链接加上加密 token 和 timeout 给视频端解密确认,详细可以参考七牛的私有空间方案。
|
3
des 2016-04-23 18:07:20 +08:00 via Android
直接 Referer 头过滤 肯定不够好,
直接弄个简单的 token ,用文件名和时间用固定的密钥加密一下,服务端验证下就行了 |
5
ipconfiger 2016-04-23 18:16:04 +08:00
既然是 IIS 直接放连接, 那么, 用 C# 写一个 http module 来通过 url 里的 token 信息来验证权限就行了. WEB 机在点播的时候临时生成一个 token 放到 url 里, 然后通过 redis 或者数据库和视频机在后面互通 token, 然后视频机的 IIS 上的 http module 就可以对比 url 里的 token 就可以鉴权了, 这个 token 用一次就删掉, 那么就不可能盗链了
|
6
wannianma 2016-04-23 18:20:22 +08:00 via iPhone
基本思路还是 token 加超时判断吧
|
7
cevincheung 2016-04-23 18:49:41 +08:00
因为视频存在一个 [拖动到未缓冲位置播放] 这样很实际的需求,所以如果用 token 那过期时间就不能太短。然而如果 token 过期时间太长而且播放器又是 HTML5 Video 的话,那右键一下就可以下载了。
如果禁止右键或者自定义菜单的话(油管),那 chrome 还有大 F12 。 纵使有了 token ,就算是绑定了 IP 和 USER_AGENT (如果 token 只验证 IP 那就太 naive 了)结合种下了加密 Cookie ,也只能防止复制链接地址到迅雷等工具去下载( cookie 对不上, useragent 对不上。然而如果是 IE 下迅雷能自己获得到 cookie 和 useragent 他那个 BHO 好像就是干这个的)还是防止不了直接浏览器中直接下载。 |
8
Pastsong 2016-04-23 19:00:32 +08:00
@cevincheung 但是如果要做到防盗链不防迅雷应该简单一点
|
9
cevincheung 2016-04-23 19:03:58 +08:00
@Pastsong 忘记 PO 主说的是 防盗链。 @.@ okay 。那 token+referer 。仅此而已。
|
10
linuxvivian 2017-07-11 12:51:05 +08:00
就是能不能做到他发出来的链接指定只能我的站可以使用,其他人不能用呢。。。
当然可以,用 800li 直播系统,就有防盗链功能,可以设置只在某 IP 或域名下播放,其他不可以。还有就是 token 认证的方式也非常好。 双保险。 嵌入页面地址过滤(正规表达式):例如:^http://(www\.800li\.net|127\.0\.0\.1).* 表示允许将视频嵌入到 www.800li.net 和 127.0.0.1 域的网页中 播放器地址过滤(正规表达式): 例如:^http://(www\.800li\.net|127\.0\.0\.1).* 表示允许来自域 www.800li.net 和 127.0.0.1 域的播放器播放本站视频 而且视频在这样流媒体系统下,是分片存储,而且每个分片加密,这样即使下载下来也是无数个小片段,需要先每一片解密,然后在合并才行。 这样的策略的话,几乎不太可能被别人盗走的。 |
11
dianliang01 2018-02-09 13:42:21 +08:00
作者:张鹏
链接: https://www.zhihu.com/question/24561177/answer/315275378 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 视频加密常见的技术:一、防盗链:严格来说,这不属于视频加密,只是防止下载。意义不大,顶多是一些 header、refer 的限制,或者加一些 token,或者弄上多段加载;但总归是有办法下载的,这个不属于加密的范畴,就不展开来讨论。二、基于微软 DRM SDK 等,或者网上公开的 drm 方案,比如 rtmpe/ hls 的加密方案等。大致分开来讲:A )微软 DRM SDK,这个在 windows 时代是比较常见的方案,但现在缺点明显,一个是微软的 sdk 现在申请需要较高费用和周期;另一个是,移动时代,这个模式的弊端太多,比如各种手机用户的支持,支持的视频格式等。B ) rtmpe:首先流媒体服务器软件价格不低;当然,我觉得这种最大的问题在于:数据不能缓存,用户每次播放都要占用服务器带宽,不容易结合 CDN 加速等。服务器带宽压力大! C ) HLS 的加密,也就是 m3u8 里面的 ts 数据都进行了加密处理,然后浏览器或者播放器播放时,通过 m3u8 里面内置的解密秘钥地址,去动态解密。这种相对来说实现简单些,但也有弊端,那就是这一类使用公开加密标准的通病。以上这类公开标准方案,通病就是:标准统一、公开。如果作为技术人员想去破解,还是有机会的。比如微软的 DRM 树大招风,破解软件网上会有提供; hls 这种,如果我伪装成自己是浏览器,你总要给我解密秘钥的,我就自然可以获取后将视频解密开来。总的来说,加密这些,如果太标准化了,太统一了,就容易破解。三、国内部分厂商的平台化方案:比如保利威视等,这类是不公开的标准,相对方案二里面的安全了些,但作为一个平台化,还是有各种弊端和被人攻击的风险,破的人多了,没有破不掉的加密技术。四、私有化解决方案:比如我们公司是为各个在线教育等客户提供个性化加密解决方案,每个不同客户采用不同的加密算法和加密思路,从而可以提升加密的安全性。首先给一些干货,来回答题主的问题,大概怎么加密:A )视频可以通过帧级加密,比如每个数据关键帧,从二进制做加密运算,加密算法当然是不能公开;最好不同的客户用不同的加密算法,或者做变形,确保一个客户被破解了,另一个客户是安全的;并且加密最好有版本号机制,破解后可以升级,你破我防,保持定期更新。B )加密的一个弱项其实是在播放,比如很多同行采用 flash 播放器去播放加密的视频。flash 是很容易逆向的,你的解密播放代码被人逆向后看到,那你的解密代码就可以被人利用去解密视频。当然,业内还可以考虑采用 FlashCC 技术,也就是将 C++代码编译后内嵌如 flash,这样逆向后看不到解密的代码,但这样就真的安全么?其实只是相对纯 flash 安全了,要想更安全,还是要做很多事情的,对于内嵌 flashCC 的,如何去破解,如何加强安全性,这里面为了业内很多同行方案的安全性,就不过多展开了。但可以跟大家讲的是:点量软件为了加强加密技术的研究,同时做了一款矛的产品去检验这类加密技术,我们的点量视频解析,可以解开各大主流视频网站的视频地址加密算法,其中很多网站采用了 flashCC 技术,一样可以解开,这就是告诉我们:单纯用 FlashCC 技术是不安全的。看一家公司的产品,是否加密等级高,首先他要有很高的破解能力,否则他做的只能是自以为不可被破解的。所以 FlashCC 是要做,但不能只是 FlashCC。C )考虑视频加密还需要考虑兼容性,比如 PC 端、手机 APP 等。往往突破口是在某个弱项的入口,所以一定要每个入口都是安全的。我们的加密 PC 下、手机 APP 都是用自主研发的播放器,内置多重加密。当然,有些客户不需要手机 APP,希望只用 H5,这种,我们就采用不同的加密方法,因为 HLS 的安全等级弱一些,所以就采用不同的加密,即使这类被人利用了,也不影响其他视频和客户的安全。以上是常用的一些视频加密的可选方案。其实除了考察视频加密,还要考虑播放器的功能性,比如是否支持水印、字幕、是否支持问答等。用户可能通过翻录来破解,如果有水印等功能,可以追溯泄密用户。另外字幕、换肤等功能,也会影响客户体验等。点量视频加密为不同的客户可以提供不同的个性化定制方案,如果是要自己做一款安全的播放平台,私有化一定适合您。 |