如何防止图片盗链像盗链问题

保护流量,如何防止网站图片被盗链调用!
莎莎美图网在平时的工作中,经常碰到一些站长莫名其妙网站的流量就被别人消耗殆尽了,这点也是所有使用限流量空间的客户所无奈的地方。为了减轻甚至杜绝客户由于流量遭受的损失,今天莎莎美图网特意从防盗链的方面给大家分享这篇文章。因为流量被消耗其中就有一种是网站图片被大量外链使用,也就是盗链,这种做法的危害是别人把您的网站图片作为己用,但消耗的却是你的网站流量,这样的盗链多了,网站的流量自然就会快速的被虚耗了。
下面是莎莎美图网就跟大家聊聊,在莎莎美图网的php虚拟主机空间,防止网站图片被盗链的方法。(这个方法也适合apache的其他空间)
首先是在根目录下创建一个.htaccess,如果已经有了,直接把下面的代码复制添加到.htaccess最下端即可。
#RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^$ [NC]
  RewriteCond %{HTTP_REFERER} ! [NC]
  RewriteCond %{HTTP_REFERER} ! [NC]
RewriteCond %{HTTP_REFERER} ! [NC]
  RewriteRule .*.(gif|jpg|png)$ [R,NC,L]
简单的解释下每条语句的意思:
RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。
RewriteCond %{HTTP_REFERER} ! [NC]
设置允许访问的HTTP来源,包括我们的站点自身、Google、Baidu、Bloglines、Feedburner等。这个可以添加多条,莎莎美图网提供的就只有自身还有谷歌百度等常用的搜索引擎的访问权限。
RewriteRule .*.(gif|jpg|png)$ [R,NC,L]
定义被盗链时替代的链接,可以是图片,也可以是404错误页,莎莎美图网定义的是首页,所以就是,如果是要定义在404页面,可以把404页面的路径加上。当然替换的页面文件体积越小越好。你也可以不设置替换图片,而是使用下面的语句即可:
RewriteRule .*\.(gif|jpg|png)$ & [F]
这样客户们就可以防止网站的流量因为图片被盗链而损失了,这个方法也可以添加上rar,zip之类的文件,只需要在(gif|jpg|png)这里面添加上即可。
例如添加zip文件的防盗链:将这个(gif|jpg|png|zip)替换掉上面完整代码中的(gif|jpg|png)这段。
莎莎美图网:
我的更多文章:
( 14:21:37)( 09:16:47)( 03:03:18)( 15:56:59)( 09:52:15)( 02:45:51)( 15:41:20)( 09:03:03)( 03:00:33)( 14:41:00)
已投稿到:怎么防止网站图片被盗链?-nginx-操作系统-壹聚教程网怎么防止网站图片被盗链?
网站图片被盗链的方法有很多针对不同环境有不同的方法,最常用的就是iis,apache,Nginx这三种了,下面我整理了一些常用的防止网站图片被盗链的配置方法与大家分享。
要防止网站图片被盗链,那么就有必要了解?链的手段,基本上可以分为两种:
第一种:盗链者直接使用图片链接引用网站上的图片。防止这种盗链情况的发生有两种可行的方法:通过Apache服务器进行控制和使用SESSION变量在程序中进行控制。
第二种:直接从网站上下载图片并且复制使用。
防止图像盗链的方法主要有两种解决方案,一种使用Apache的mod_rewrite.so扩展,另一种使用PHP的SESSION变量。
1.Apache防盗技术
Apache防盗技术的原理与PHP技术的原理是相同的,都需要应用Apache的mod_rewrite.so模组。Apache服务器的配置文件httpd.conf的修改方法如下:
#LoadModule rewrite_module modules/mod_rewrite.so
将该项前面的&#&去掉,启动该项。
查找httpd.conf文件,找到其中的&AllowOverride&项,将它的值修改为All。保存在项目根目录下创建.htaccess文件,定义防止网图片被?链的方法。.htaccess文件的代码如下:
SetEnvIfNoCase Referer &^http://192.168.1.2/& local_ref=1
&FilesMatcvh &.(gif|jpg)&&
Order Allow,Deny
Allow from env=local_ref
&/FilesMatch&
Referer字段:当Apache处理一个请求时,将检测头信息中的Referer字段,并且设置环境变量local ref为l,如果请求从本身的网站地址开始,即是本网站的一个页面。
^http://192.168.1.59/:是一个,为了设置环境变量,Referer值必须匹配它。
&NoCase&指令:定义的值忽略字符串的大小写。
Order Allow,Deny:设置Apache对当前的请求,将执行列表中的Allow指令,然后重复进行Deny指令。
local ref:这将使设置了local ref环境变量(无论什么值)的请求通过。任何其他的:请求将被拒绝,因为它们不符合Allow的条件并且默认是拒绝访问的。
首先是在根目录下创建一个.htaccess,如果已经有了,直接把下面的代码复制添加到.htaccess最下端即可。
#RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^$ [NC]
  RewriteCond %{HTTP_REFERER} ! [NC]
  RewriteCond %{HTTP_REFERER} ! [NC]
RewriteCond %{HTTP_REFERER} !111cn.net [NC]
  RewriteRule .*.(gif|jpg|png)$ 111cn.net[R,NC,L]
简单的解释下每条语句的意思:
RewriteCond %{HTTP_REFERER} !^$ [NC]
允许空&HTTP_REFERER&的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有&HTTP_REFERER&才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。
RewriteCond %{HTTP_REFERER} ! [NC]
设置允许访问的HTTP来源,包括我们的站点自身、、Baidu、Bloglines、Feedburner等。这个可以添加多条,无忧小编提供的就只有自身还有谷歌百度等常用的搜索引擎的访问权限。
RewriteRule .*.(gif|jpg|png)$ 111cn.net[R,NC,L]
定义被盗链时替代的链接,可以是图片,也可以是404错误页,无忧小编定义的是首页,所以就是111cn.net,如果是要定义在404页面,可以把404页面的路径加上。当然替换的页面文件体积越小越好。你也可以不设置替换图片,而是使用下面的语句即可:
RewriteRule .*.(gif|jpg|png)$ & [F]
这样客户们就可以防止网站的流量因为图片被盗链而损失了,这个方法也可以添加上rar,zip之类的文件,只需要在(gif|jpg|png)这里面添加上即可。
例如添加zip文件的防盗链:
将这个(gif|jpg|png|zip)替换掉上面完整代码中的(gif|jpg|png)这段。
SESSION变量防盗链
SESSION变量防盗链技术的原理是判断图片访问者的权限,如果有权限则可以访问,否则就不能够访问。具体实施就是,首先定义一个SESSION变量,然后使用另一个脚本生成图像,& 并且在这个脚本中判断这个SESSION变量是否存在,如果存在则可以访问图像。例如,下面:是一个显示一幅图像的简单页面,图像的源URL是一个PHP脚本,确保只有站点的参观者才i能够看到图像。
session_start();
$_SESSION['viewimages']=
&img src=&getimage.php?img=bg3_01.jpg&&
注意在上面的代码中登记了一个称为viewimages的SESSION变量,而&img&标记的src,属性中显示的是getimage.php?img=bg3_Ol.jpg。
下面是脚本getimage.php的代码。首先,检查SESSION变量viewimage,看其是否被设置为true:
session_start();
if(isset($_SESSION['VIEWIMAGES']) && $_SESSION['viewimage']==true){
$dims = getimagesize(&images/&.$_GET['IMG']);
header(&Content-Disposition:filename=&.$_GET['img']);
header(&Content-Type:&.$dims['mime']);
header(&Content-Length:&.filesize(&images/&.$_GET['img']));
readfile(&images/&.$_GET['img']);
header(&HTTP/1.1 404 NOT Found&);
header(&Content-Type:text/plain&);
echo & 这是一个被保护的图片不可盗链! n&;
配置指令location来实现简单的图片和其它类型文件的防盗链。
Nginx 的配置文件 :
location ~ .(jpe?g|png|gif)$ {
&&&& valid_referers none
&&&& if ($invalid_referer) {
&&&&&&& return&& 403;
用 (&|&) 来分隔你想保护的文件的扩展名。
valid_referers指令包含允许访问资源的网站列表,不在列表中请求的返回403。下面是valid_referers指令参数的解释 :
none - 匹配没有Referer的HTTP请求(Matches the s with no Referer header).
blocked - 请求有Referer ,但是被防火墙或者代理服务器修改,去掉了htt://或http:// (Matches the requests with blocked Referrer header).
*. - 匹配的所有二级域名(Matches all the sub domains . Since v0.5.33, * wildcards can be used in the server names).
除了使用location对文件访问进行限制,也可以对特定目录进行限制,下面的配置会禁止访问images目录下所有文件
location /images/ {
&&&& valid_referers none
&&&& if ($invalid_referer) {
&&&&&&& return&& 403;
以上配置都是简单通过验证请求头来实现防盗链,如果盗链的网站通过伪造来路的http请求时不能屏蔽
上一页: &&&&&下一页:相关内容编程开发子分类}

我要回帖

更多关于 apache 防止盗链 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信