一、盗链行为与CDN防盗链技术
“盗链”是未经源网站允许的情况下,通过超链接引用源网站内容,如图片,视频等。盗链主要是会造成原站数据被盗取,流量增加带来的维护网站成本。所以CDN厂商会配合源站提供一些防盗链策略来配合打击非法流量。
防盗链的做法通常是:仅仅对特定用户开放访问权限,而没有权限的用户即使获得链接地址,因为没有各种鉴权额外信息,也无法访问该链接所指向的内容。
接下来介绍CDN上常见盗链方法及其特点,介绍盗链对受害网站与用户造成的危害,以及如何利用CDN阻止盗链访问,从而确保网站数据访问安全。
二、CDN防盗链技术
2.1 基于Referer的防盗链解决方案
根据HTTP标头决定是否允许访问
HTTP协议规范在HTTP标头中定义了referer字段,用于表示HTTP请求来源。该字段值由浏览器在发起HTTP请求时指定。该字段值代表当前HTTP请求的来源,例如在点击网页链接时,浏览器会向服务器提交一个HTTP请求,请求中HTTP标头的referer字段值为引用该资源的网页地址,即用户点击的网页地址。
通过对HTTP标头中referer字段内容跟进行判断,可以判定请求是正常用户发起的请求还是来自盗链网站。
2.2 CDN创建ACL规则(访问控制层)
ACL配置了网页请求的准入/拒绝准则,只对有权限的用户开发,而将盗链用户拒之门外。拒绝的方法可以有返回403/或者200状态码配上错误页面等等。
还有诸如在边缘站点运行Lambda代码来实现更复杂的控制逻辑。使用Lambda在边缘节点对HTTP请求和响应进行按需调整。当CDN收到用户请求,CDN从源端请求资源,CDN接收到源端反馈资源和CDN即将向用户返回资源时,均支持调用Lambda对HTTP请求或响应进行按需处理。
2.3 通过超时机制加强URL验证
使用HTTP标头字段实现防盗链可以应对常见的盗链情形。但盗链者仍然可以通过更加复杂的手段如客户端脚本去生成一个具有合法HTTP标头的请求,从而获取访问文件的能力。
为了进一步提升文件访问的安全性,可以通过对请求的URL添加一个具有时效性的随机验证码作为签名。用户通过签名的地址访问相关资源。系统在后台对签名信息进行比对,确认签名正确性和时效性,从而识别当前请求是否有权访问对应文件。
通过加入超时机制对链接设置了有效期,使得链接不能随意扩散,而且这个有效期不一定是明文,比如一段unix时间戳,也可以是通过一定复杂度加密这段时间戳,然后在CDN进行还原后进行有效期检查。
所以CDN往往还提供了一整套签名管理方案,包括签名URL生成API,集成的签名验证机制,从而简化资源访问控制。 开发人员还可以选择使用签名Cookie用于简化指定用户访问t资源的过程。相比签名URL,签名Cookie可以授予制定用户访问多个资源的能力,而无需为每个独立的资源生成签名URL。在修改URL不方便的情况下,这时就可以优先使用签名Cookie。
2.4 适用于媒体资源的防盗链技术
CDN 盗版,已成为 OTT 视频行业的主流。盗版者共享一些令牌,这些令牌授予合法服务提供商交付基础设施中内容的访问权限。有了这些令牌,盗版者就可以直接从CDN获取数据。这让 OTT 服务提供商的痛苦加倍:不仅一些非法用户未经授权访问他们的内容,而且内容提供商还要为这些盗版者支付交付费用。尽管实施了身份验证令牌和数字版权管理 (DRM),但 OTT 视频流服务几乎没有阻碍 CDN 盗版的兴起。
流媒体安全专家长期以来在很大程度上忽视了 CDN 的作用。为了打击盗版,服务提供商首先关注受控机顶盒的可信硬件身份验证,然后为其 OTT 服务实施 DRM。CDN 令牌旨在提供轻量级可选安全层,而不会影响流媒体可扩展性,这是 CDN 服务器的基本目的。采用基于软件的身份验证来支持移动设备和 DRM 的漏洞=使 CDN 处于更核心的位置,并要求重新审视 CDN 令牌的设计。
CDN 令牌是一个小型数字对象,它对授予资源访问权限的要求进行编码。它搭载在从客户端到 CDN 服务器的每个请求中。这涉及三个实体:内容提供商、客户端和 CDN 服务器。客户端通过向内容提供商发送与其下一个请求相关的一些数据来触发新令牌的生成。内容提供商验证请求并发出加密和完整性保护的令牌,通常依赖于一些加密原语。然后,客户端将令牌连同其请求一起发送到 CDN 服务器,服务器解密令牌,验证令牌的完整性,检查令牌的要求是否得到满足,如果一切正常,则验证访问权限。执行这些任务所需的加密密钥通常从内容提供商处获取并在配置级别进行管理。
一次性令牌是为一个特定请求和一个特定客户端构建的。它们保证令牌不能被重放。但是,它们需要相应地扩展交付基础设施的安全部分。单个客户端在视频流会话期间会生成许多请求:每五秒钟,客户端就会请求一份清单、一个视频片段和一个音频片段,更不用说其他相关数据了。对于大多数现有内容提供商的令牌服务器或 CDN 服务器来说,为每个单独的对象和用户颁发和验证令牌是一项挑战。
社区采用了基于时间的令牌的松散形式,介于短期令牌(具有较短的有效期)和长期令牌(具有较长的有效期)之间。令牌的有效期越长,计算资源就越少,但盗版风险就越高。实际上,流媒体社区尚未就最佳实践达成一致。CTA Wave 工作组(该工作组标准化了一种名为通用访问令牌 (CAT) 的通用 CDN 令牌格式)已推迟发布其第一份参考文档。