目 录CONTENT

文章目录

关于防盗链

在水一方
2021-11-24 / 0 评论 / 0 点赞 / 463 阅读 / 1,887 字 / 正在检测是否收录...

出现的场景

最近在部署博客项目的时候接触到了防盗链这个概念,之前对这个词是没有概念的,最近知道了在Nginx中做一些简单配置就实现了防盗链,想着还是对这部分内容做一些梳理来加深记忆

认识防盗链

防盗链功能通过设置Referer白名单以及是否允许空Referer,限制仅白名单中的域名可以访问您Bucket内的资源。OSS支持基于HTTP和HTTPS header中表头字段Referer的方法设置防盗链。

# 在nginx的配置文件中配置资源防盗链(指定目录or指定文件类型)
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
location /upload/ {
  access_log off;
  # 域名白名单,去掉则阻止所有非本站请求
  alid_referers none blocked server_names *.bbchin.com 127.0.0.1 localhost ~\.google\. ~\.baidu\. ~\.qq\.;
  if ($invalid_referer) {
    rewrite ^/ https://cdn.jsdelivr.net/gh/qinhua/cdn_assets/img/robber.jpg;
    # return 403;
  }
  proxy_pass http://127.0.0.1:8090; // 代理来源
}

是否进行防盗链验证的具体场景如下

  • 仅当通过签名URL或者匿名访问Object时,进行防盗链验证。
  • 当请求的Header中包含Authorization字段,不进行防盗链验证

作用以及原理

防盗链通过请求Header中的Referer地址判断访问来源。当浏览器向Web服务器发送请求的时候,请求Header中将包含Referer,用于告知Web服务器该请求的页面链接来源。OSS根据浏览器附带的Referer与用户配置的Referer规则来判断允许或拒绝此请求,如果Referer一致,则OSS将允许该请求的访问;如果Referer不一致,则OSS将拒绝该请求的访问。例如,某个Bucket设置了Referer为https://10.10.10.10:
用户A在https://10.10.10.10嵌入test.jpg图片,当浏览器请求访问此图片时会带上https://10.10.10.10的Referer,此场景下OSS将允许该请求的访问。
用户B盗用了test.jpg的图片链接并将其嵌入https://192.168.0.0,当浏览器请求访问此图片时会带上https://192.168.0.0的Referer,此场景下OSS将拒绝该请求的访问。

拓展:也可以通过oss控制台来设置防盗链

操作步骤

说明 当您使用OSS的Bucket域名(如bucketname.oss-cn-zhangjiakou.aliyuncs.com)预览MP4文件时,由于浏览器默认会同时发出两个请求,其中一个为带Referer的请求,另一个为空Referer的请求,因此设置防盗链时必须同时满足在Referer中添加Bucket域名,且允许空Referer的条件。当您使用OSS的Bucket域名预览非MP4文件时,则仅需允许空Referer。
单击保存。

0

评论区