网络视频(Web 视频)是指利用 HTML5 技术在浏览器中播放的视频,这类视频资源通常可以被随意下载,某些行业(比如教培行业)如果希望保护自己的视频资源不被下载,就需要对视频做防盗链处理。
防盗链需要着重加强两个方面的安全性:网络传输和客户端。
网络传输安全
网络传输层面能做的不多,HTTPS
是必要的,除此之外的防护措施效果也有限。
验证 Referer
防盗链最常规的手段是验证 Referer
,而伪造 Referer
几乎零成本,所以它只防君子不防小人,没用。
请求防重放
盗链可以理解成一种对静态资源的 “重放攻击”,所以可以用应对重放攻击的思路来改造静态资源请求,通过一个动态接口返回静态资源,并且加入变量让动态请求短时间内失效,比如随机数、时间戳、流水号等等。
这种方式可以做到让链接地址没有复用价值,但攻击者如果脚本化还是可能在有限时间内下载到文件本身。而且这种方案会明显提升服务端的性能压力,因为静态资源的请求量往往比较大,尤其是视频通常还要处理成 m3u8 格式的视频切片,请求量会剧增。
请求权限校验
动态接口可以叠加上权限校验,这也是常见的业务需求,仅授权用户可见。
虽然作为一种防盗手段来说这约等于没有,因为请求信息都能在 chrome 里拿到,在 postman 里重放请求就行了。但这种手段却可以有效的防住一大批视频下载浏览器插件,因为大部分下载插件都是直接请求 url,如果授权信息放在 heade