盗链行为与 AWS 防盗链技术

2020-12-25

"盗链"是互联网用语。通常指未经源网站允许的情况下,通过超链接引用源网站内容,如图片,视频等。盗链行为会造成受害网站数据泄露以及经济损失。
在现代互联网公司业务中防盗链技术扮演者越来越重要的角色,例如:网站通常会对内容进行防盗链处理,仅仅对特定用户开放,而没有权限的用户即使获得链接地址,也无法访问该链接所指向的内容。

本文根据常见盗链方法及其特点,介绍盗链对受害网站与用户造成的危害,以及如何利用AWS服务阻止盗链访问,从而确保网站数据访问安全。

盗链的形式与危害

目前,互联网上常见盗链过程如下图所示:

图1:盗链过程

由上图中可以看出,盗链过程中,盗链网站自身不提供全部网页所需内容。部分网页内容来自受害网站。在以上过程中,受害网站实际承载盗链网站的部分业务流量和压力,而盗链网站则盗取该部分数据流量和计算资源甚至客户流量用以支撑自己的业务。受害网站则需要承担被盗取流量和计算资源所带来的运营成本,从而造成受害网站的经济损失。

同时,由于盗链的过程具有隐秘性,最终用户往往难以及时察觉盗链行为,在一些场景下盗链甚至会造成最终用户经济损失。

基于Referer的防盗链解决方案

根据HTTP标头决定是否允许访问

HTTP协议规范在HTTP标头中定义了referer字段(见RFC 1945, RFC 7231),用于表示HTTP请求来源。该字段值由浏览器在发起HTTP请求时指定。该字段值代表当前HTTP请求的来源,例如在点击网页链接时,浏览器会向服务器提交一个HTTP请求,请求中HTTP标头的referer字段值为引用该资源的网页地址,即用户点击的网页地址。

利用AWS服务实现referer检查

  • 方案一:通过WAF实现referer检查

WAF是由AWS提供的应用防火墙功能。WAF配合CloudFront,ALB或API Gateway使用,支持通过访问控制列表对Web请求进行过滤,从而实现拒绝盗链请求的功能。

利用URL验证提升数据访问安全性

使用HTTP标头字段实现防盗链可以应对常见的盗链情形。但盗链者仍然可以通过更加复杂的手段如客户端脚本去生成一个具有合法HTTP标头的请求,从而获取访问文件的能力。

为了进一步提升文件访问的安全性,可以通过对请求的URL添加一个具有时效性的随机验证码作为签名。用户通过签名的地址访问相关资源。系统在后台对签名信息进行比对,确认签名正确性和时效性,从而识别当前请求是否有权访问对应文件。

AWS CloudFront Signed URL提供一整套签名管理方案,包括签名URL生成API,与CloudFront集成的签名验证机制,从而简化资源访问控制。

适用于媒体资源的防盗链技术

媒体资源可以通过DRM数字版权管理技术实现更安全的资源访问管理。

DRM数字版权管理技术通过对媒体资源进行加密,并将媒体节目授权中心URL和密钥ID保存在媒体资源文件头部,从而实现更加安全的媒体资源访问控制。用户在播放媒体资源时,还需要从媒体节目授权中心获得对应密钥才能解密媒体内容。未经授权的用户即使获得媒体文件,也无法播放媒体内容。

AWS Elemental MediaPackage服务支持将DRM数字版权管理信息打包到媒体文件中,从而提供更加安全的媒体内容访问管控。

返回技术博客