WEB资源防盗链

盗链概念

在自己的页面上展示一些并不在自己的服务器上的内容,获得他人服务器上的地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。常见的是小站盗用大站的图片、音乐、视频、软件等资源。通过盗链的方式可以减轻自己服务器的负担,因为真实的空间和流量均是来自别人的服务器


防盗链概念

防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站资源展示页面的资源链接失效,可以大大减轻服务器及带宽压力


防盗链工作原理

通过Referer或者签名,网站可以检测目标页面访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。一旦检测到来源不是本站即进行阻止或者返回指定页面

  • Referer

    • Nginx模块:ngx_http_referer_module用于阻挡来源非法的域名请求
    • Nginx指令 valid_referers,全局变量$invalid_referer
      1
      2
      3
      4
      5
      6
      7
      location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$
      {
      valid_referers none blocked xxx.com *.xxx.com
      if($invalid_referer) {
      rewrite ^/http://www.xxx.com/403.jpg;
      }
      }
  • 加密签名

    • 使用第三方模块:HttpAccessKeyModule 实现Nginx防盗链
      • accesskey on|off // 模块开关
      • accesskey_hashmethod md5|sha-1 // 签名加密方式
      • accesskey_arg // GET参数名称
      • accesskey_signature // 加密规则
        1
        2
        3
        4
        5
        6
        7
        location ~.*\.(gif|jpg|png|flv|swf|rar|zip)$
        {
        accesskey on;
        accesskey_hashmethod md5;
        accesskey_arg "key";
        accesskey_signature "password$remote_addr";
        }