防盗链

什么是盗链

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。

什么是盗链行为

客户端向服务器请求资源时,为了减少网络带宽,提升响应时间,服务器一般不会一次将所有资源完整地传回给客户端。比如在请求一个网页时,首先会传回该网页的文本内容,当客户端浏览器在解析文本的过程中发现有图片存在时,会再次向服务器发起对该图片资源的请求,服 务器将存储的图片资源再发送给客户端。在这个过程中,如果该服务器上只包含了网页的文本 内容,并没有存储相关的图片资源,而是将图片资源链接到其他站点的服务器上,就形成了盗链行为。

防盗链

通过分析访问源,拒绝非法访问,主要是图片和网盘服务器使用的较多。

HTTP Referer

HTTP Referer 是header 的一部分,当浏览器向 web 服务器发送请求的时候,一般会带上 Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。通过该头域的值,我们可以检测到访问目标资源的源地址

防盗链原理

在 http 协议中,如果从一个页面跳到另一个页面,header 字段里面会带个 Referer。图片服务器通过检测 Referer 是否来自规定域名,来进行防盗链。

如果盗用网站是 https 的协议,而图片链接是 http 的话,则从 https 向 http 发起的请求会因为安全性的规定,而不带 referer,从而实现防盗链的绕过。官方输出图片的时候,判断了来源(Referer),就是从哪个网站访问这个图片,如果是你的网站去加载这个图片,那么 Referer 就是:你的网站地址;你的网址肯定没在官方的白名单内,(当然作为可操作性极强的浏览器来说 referer 是完全可以伪造一个官方的 URL 这样也也就也可以饶过限制)所以就看不到图片了。

因此,若不发送 Referer,也就是没有来源。那么官方那边,就认为是从浏览器直接访问的,所以就能加载正常的图片了。目的盗链是指在自己的页面上展示一些并不在自己服务器上的内容。通常的做法是通过技术手段获得它人服务器上的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。

比较常见的是一些小站盗用大站的资源(图片、音乐、视频),对于这些小站来说,通过盗链的方法可以减轻自己服务器的负担,因为真实的空间和流量均是来自别人的服务器。对大站造成的影响确实徒徒增加了服务器压力,用户还不是自己的于是乎防盗链就是防止这种行为的产生,实施防盗链系统后,因为屏蔽了那些盗链的间接资源请求,从而可以大大减轻服务器及带宽的压力,也正如此,越来越多的站点都开始实施防盗链技术。

盗链危害

  1. 大量的盗链,会消耗原生网站带宽,导致服务器运行缓慢,影响原生网站用户体验。如果没有良好的防盗链技术,一般服务器数周之内就会被盗链拖垮,并且不能给原生网站带来任何流量。
  2. 版权被无偿使用,侵犯了著作人的权益。
  3. 倒链一旦猖獗,会严重阻碍了互联网的健康发展,没人愿意为正版付费,自然也就没有了正版生长的土壤,最后受害的还是广大网民。

防盗链案例

对象存储中防盗链

对于私有的 bucket,因为访问控制的原因,基本不存在大规模盗链的可能性,对于公开空间,因为没有访问权限控制,需要进行防盗链设置。

七牛

七牛对于公开空间的防盗链做法主要是通过设置白名单、黑名单和空 referer 是否可以访问来实现的
设置选项(白名单和黑名单不会同时生效)有:白名单、黑名单、关闭三个选项。

七牛采用三个参数来实现防盗链:

设置 描述
<RefererType> 防盗链类型:黑名单(black)
<RefererValue> 防盗链黑白名单列表:以逗号(,)分割
<NullReferer> 是否允许空 referer

AWS

AWS 也是通过 bucket 的访问控制来实现防盗链的,AWS 通过 bucket Policy 中的 condition 来先设置不同请求的权限。

防盗链总结

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。