什么是盗链
客户端向服务器请求资源时,为了减少网络带宽,提升响应时间,服务器一般不会一次将所有 资源完整地传回给客户端。比如在请求一个网页时,首先会传回该网页的文本内容,当客户端 浏览器在解析文本的过程中发现有图片存在时,会再次向服务器发起对该图片资源的请求,服 务器将存储的图片资源再发送给客户端。在这个过程中,如果该服务器上只包含了网页的文本 内容,并没有存储相关的图片资源,而是将图片资源链接到其他站点的服务器上,就形成了盗 链行为referer
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。通过该头域的值,我们可以检测到访问目标资源的源地址-
对象存储中防盗链
- 对于私有的bucket,因为访问控制的原因,基本不存在大规模盗链的可能性,对于公开空间,因为没有访问权限控制,需要进行防盗链设置
-
友商防盗链做法
-
七牛
七牛对于公开空间的防盗链做法主要是通过设置白名单、黑名单和空referer是否可以访问来实现的
设置选项(白名单和黑名单不会同时生效)有:白名单、黑名单、关闭三个选项
七牛采用三个参数来实现防盗链:
<RefererType>: 防盗链类型:黑名单(black)|白名单(white)
<RefererValue>: 防盗链黑白名单列表:以逗号(,)分割
<NullReferer>:是否允许空referer
AWS
AWS也是通过bucket的访问控制来实现防盗链的
AWS通过bucket Policy中的condition来先设置不同请求的权限
上面的例子就是说,允许匹配的域名和ip拥有bucket:mybucket GetObject的权限
-
-
初步设想
- 采用类似七牛的方式设置白名单、黑名单来实现防盗链
- 通过http请求中的referer确定请求的来源,如果http请求中没有referer为空,这里对于referer为空是否允许访问也可以设置
- 在我们bucket访问控制中加入字段
<referer类型>: 防盗链类型:白名单 | 黑名单 | 关闭
<白名单列表> 域名(ip)匹配,以逗号隔开
<黑名单列表> 域名(ip)匹配,以逗号隔开
<NullRefere> 是否支持空referer
- 第一个版本先不支持共同支持白名单和黑名单同时设置,这个接口要留下
防盗链
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一.盗链的定义: 某内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的...