防盗链


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

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

  • 对象存储中防盗链

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

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

      七牛防盗链.png

      七牛采用三个参数来实现防盗链:
      <RefererType>: 防盗链类型:黑名单(black)|白名单(white)
      <RefererValue>: 防盗链黑白名单列表:以逗号(,)分割
      <NullReferer>:是否允许空referer

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

    上面的例子就是说,允许匹配的域名和ip拥有bucket:mybucket GetObject的权限


    AWS_bucket_policy.png
  • 初步设想

    • 采用类似七牛的方式设置白名单、黑名单来实现防盗链
    • 通过http请求中的referer确定请求的来源,如果http请求中没有referer为空,这里对于referer为空是否允许访问也可以设置
    • 在我们bucket访问控制中加入字段
      <referer类型>: 防盗链类型:白名单 | 黑名单 | 关闭
      <白名单列表> 域名(ip)匹配,以逗号隔开
      <黑名单列表> 域名(ip)匹配,以逗号隔开
      <NullRefere> 是否支持空referer
    • 第一个版本先不支持共同支持白名单和黑名单同时设置,这个接口要留下
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 A是网站站长,在A的网站的网页里有一些图片和音频视频的链接,这些静态资源都保留在服务器上。B是另一个网站的站...
    Charlot阅读 1,195评论 0 3
  • 一.盗链的定义: 某内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的...
    繁天涯阅读 13,615评论 2 9
  • 关于防盗链与跨域访问 最近用阿里云的时候发现一些防盗链与跨域访问的一些坑,填完坑之后稍微整理一下。 防盗链 防盗链...
    LibX阅读 2,651评论 0 0
  • nginx防盗链的方法 一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直...
    很少更新了阅读 8,690评论 1 3
  • 场景 最近公司项目需求中涉及到需要引用微信朋友圈中的图片资源,结果被腾讯的防盗链系统拦截,所有的图片都变成了令人尴...
    皱凯凯凯凯阅读 2,105评论 1 10

友情链接更多精彩内容