您的位置:首页 > Web前端 > 其它

网站图片防盗链的常见方法

更多 2017/6/17 来源:Web前端利来国际娱乐官网浏览量:1220
利来国际娱乐官网标签: 图片防盗链
本文导读:在运营网站时,我们通常希望网站的图片资源不被其它网站盗链,例如,发布商品需要对宝贝进行描述,就需要图片展示,而为了使拍摄的图片不被别人调用,就需要防盗链的功能,下面介绍网站图片防盗链的常见的几种方法。

一、防盗链原理

http标准协议中有专门的字段记录referer,利用referer可以追溯到请求时从哪个网站链接过来的,对于图片资源文件,可以跟踪到引用它的网页地址是什么,因此可以基于这个Referer字段对图片进行防盗链处理。

例如:

1、正常使用百度贴吧查看图片的请求头信息

2、盗链这个图片后的请求头信息

 

二、网站图片防盗链的常见方法

 

1、通过nginx 设置图片防盗链

(1)、在Nginx 的配置文件里加入类似如下代码:

 
   复制

location ~.*\.(jpg|gif|png)$ {
     valid_referers none blocked *.mysite.com mysite.com;
     if ($invalid_referer) {
     #rewrite ^/ 防盗链错误页面URL;
     return 403;
      }
}

说明

[1]、location ~.*\.(jpg|gif|png)$  表示所有 以 jpg|gif|png 为后缀名的文件都进行防盗链处理。用 (“|”) 来分隔你想保护的文件的扩展名。


[2]、valid_referers none blocked *.abc.com abc.com;   验证referer , 其中:

none 表示直接访问的,不存在referer;  

blocked为根据防火墙伪装的 referer。


[3]、#rewrite ^/ 防盗链错误页面URL;  如果图片是放盗链,重定向到地址 防盗链错误页面URL,一般是图片地址,但是要注意,这个图片地址不只能在此防盗链规则里,否则也访问不到。

[4]、return 403;表示403错误。

[5]、除了使用location对文件访问进行限制,也可以对特定目录进行限制,下面的配置会禁止访问images目录下所有文件

 
   复制

location /images/ {
     valid_referers none blocked mysite.com *.mysite.com;
     if ($invalid_referer) {
        return   403;
    }
}

 

2、通过.htaccess文件设置图片防盗链

(1)、在根目录下创建一个.htaccess,如果已经有了,直接把下面的代码复制添加到.htaccess最下端即可。

 
   复制

#RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^$ [NC]
  RewriteCond %{HTTP_REFERER} !允许访问的HTTP来源网址1 [NC]
  RewriteCond %{HTTP_REFERER} !允许访问的HTTP来源网址2 [NC]

  RewriteRule .*.(gif|jpg|png)$ 防盗链重定向网址[R,NC,L]

(2)、说明

[1]、RewriteCond %{HTTP_REFERER} !^$ [NC]

允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。

[2]、RewriteCond %{HTTP_REFERER} !允许访问的HTTP来源网址1 [NC]
 

设置允许访问的HTTP来源,包括我们的站点自身、Google、Baidu等。这个可以添加多条


[3]、RewriteRule .*.(gif|jpg|png)$ 防盗链重定向网址[R,NC,L]
 

定义被盗链时替代的链接,可以是图片,也可以是404错误页,当然替换的页面文件体积越小越好。

 

3、.NET程序中可以通过 URL Rewrite Module 组件设置图片防盗链

 

4、通过程序代码控制

 

收藏
282
很赞
314
  • 上一篇:测试用例写哪些方面
  • 下一篇:没有了
  • 博聚网