zoukankan      html  css  js  c++  java
  • Nginx实现图片防盗链(referer指令)

    什么是图片盗链

     
    • 每张图片在浏览器中都有对应的图片地址,在浏览器中输入这个地址是可以直接拿到图片。
    • 图片盗链,就是盗用者在他的站上需要显示我们的图片,他没有把图片拿下来,放到他的服务器上,
    • 而是直接就用我们的,图片地址,来请求到我们的服务器来拿图片,流量产生在我们这边。
     
    referer

     
    referer指令通过检测访问图片的来源,来做出一些控制。
     
    图片访问的来源
    • 通过谷歌/百度访问
    • 通过浏览器直接访问
    • 本站点的访问
    • 来自非法的域名访问
     
    referer
    • nginx 模块 ngx_http_referer_module 通常用于阻挡来源非法的域名请求.
    • 但我们应该牢记,伪装 Referer 头部是非常简单的事情,所以这个模块只能用于阻止大部分非法请求.
    • 我们应该记住,有些合法的请求是不会带 referer 来源头部的,所以有时候不要拒绝来源头部(referer)为空的请求
     
     
    图片防盗链配置
    location ~* .(gif|jpg|png|bmp)$ {
         valid_referers none blocked *.ttlsa.com server_names ~.google. ~.baidu.;
         if ($invalid_referer) {
         return 403;
         #rewrite ^/ http://www.ttlsa.com/403.jpg;
         }
    }
     
    • 以上所有来至 ttlsa.com 和域名中包含 google 和 baidu 的站点都可以访问到当前站点的图片,
    • 如果来源域名不在这个列表中,那么$invalid_referer 等于 1,在 if 语句中返回一个 403 给用户,
    • 这样用户便会看到一个 403 的页面,如果使用下面的 rewrite,那么盗链的图片都会显示 403.jpg。
    • 如果用户直接在浏览器输入你的图片地址,那么图片显示正常,因为它符合 none 这个规则.
     
    参数说明
    • none
      • “Referer” 来源头部为空的情况
    • blocked
      • “Referer”来源头部不为空,但是里面的值被代理或者防火墙删除了,这些值都不以 http://或者 https://开头.
    • server_names
      • “Referer”来源头部包含当前的 server_names(当前域名)
    • regular expression
      • 正则表达式,~表示排除 https://或 http://开头的字符串
  • 相关阅读:
    dedecms调用指定栏目名称,链接
    修改 Dedecms 文档文章标题长度的方法
    dedeCMS的arclist标签中limit是什么意思
    DedeCms织梦系统[field:description /]标签如何限制字数?
    mysql 如何更改root密码
    允许phpmyadmin空密码登录的配置方法
    Apache启动失败解决办法
    Apache 配置多域名、二级域名
    使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
    使用UITextField自动格式化银行卡号
  • 原文地址:https://www.cnblogs.com/Aiapple/p/7367992.html
Copyright © 2011-2022 走看看