当前位置: 主页 > 服务器技术 > Web服务器 > apache防盗链方法汇总

apache防盗链方法汇总

时间:2010-7-15来源:互联网 点击:
防盗链原理:

http标准协议中有专门的字段记录referer ,一来可以追溯上一个入站地址是什么 ,二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。因此所有防盗链方法都是基于这个Referer字段
主要有两种方法实现
第一种:使用FilesMatch
<VirtualHost *:80>
     ServerAdmin laogui@gmail.com
     DocumentRoot D:/www/www.chinahtml.com
     ServerName www.aaa.com
     ServerName aaa.com
     盗用连接指定显示的页面。也可以不用此项,这样盗用连接也可无法使用。
     ErrorDocument 404 http://www.chinahtml.com/error.html
     允许www.aaa.com的网站使用
     SetEnvIfNoCase Referer "^http://www.aaa.com" local_ref=1
     允许 aaa.com   的网站使用
     SetEnvIfNoCase Referer "^http://aaa.com" local_ref=1
     定义防盗文件的扩展名
       <FilesMatch "\.(gif|jpg|png|css|js|swf)">
         Order Allow,Deny
         Allow from env=local_ref   允许上面指定域名
     </FilesMatch>
</VirtualHost>

防盗链设置样本:使用正则表达式

SetEnvIf Referer "^http://(.)+\.ilinux\.cn/" local_ref=1

SetEnvIf Referer "^http://(.)+\.isql\.cn/" local_ref=1
#SetEnvIf Referer "^http://(.)+\.other\.org\.cn/" local_ref=1
SetEnvIf Request_URI "/logo(.)+" local_ref=0
<FilesMatch "\.(mp3|wmv|png|gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip|mp3)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

解释:
1. 蓝色部分,表示设置允许访问的referer地址,第一行的意思为所有http协议访问,以.ilinux.cn结尾的域名地址,第二行类似,只是换成 了.isql.cn,表问我前面的鬼符是什么,不懂得可以去翻正则表达式的研究文献,不想深究的可以照猫画虎设置自己的网站。
2. 绿色部分,表示不在上述引用域名范围内,但可以被放行的特例,本例中表示网站/目录,所有以logo开头的文件(用作允许其它网站的友情连接引用本站logo)。
3. 橙色部分是设置反盗链的关键部分,上面每一个设置都联系到了local_ref这个环境变量,只有这个变量为1,则允许被引用,否则显示一个X。
4. 紫色部分设置了哪些扩展名的文件加入反盗链的规则。

第二种方法:

使用rewirte方式:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn/.*$     [NC]
RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn$       [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn/.*$       [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn$       [NC]
RewriteCond %{HTTP_REFERER} !^http://ilinux.cn/.*$       [NC]
RewriteCond %{HTTP_REFERER} !^http://ilinux.cn$       [NC]
RewriteRule .*\.(gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip)$ http://www.ilinux.cn [R,NC]
上面的,需要Rewrite模板.所有指定的文件,如果Referer不是上面的值,将被重定向到首页.

还有使用.htaccess 文件的方法,不过不推荐使用,影响apache性能。
写一个.htaccess
包括以下代码:

SetEnvIfNoCase
Referer "^http://google\.com/"
local_ref=1
<FilesMatch "\.(jpg)">
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
Allow from 123.123.123.123
</FilesMatch>

如果你的网址
是www.myst.cn就改为
SetEnvIfNoCase Referer "^http://www\.myst\.
com/" local_ref=1
<FilesMatch "\.(jpg)">
这意思是说防止人家连结你的jpg档案.可以增修为
<FilesMatch "\.(jpg|zip|rar)">
ps.最后一个不使用区各线
Allow from 127.0.0.1
这表示允许连结主机的IP。
你要是默认其他网站可以连结的话,就填入该主机IP,把上述的code储存为.htaccess然后放入你安装的目录下即可。
*nix系统在apache配置文件里面打开使用.htaccess功能。

AllowOverride All

话说现在建站真不容易,想好好搞一个站,总会被人WC的采集,盗链,攻击,无人值守的垃圾站比苦心经营的站收入还要可观。所以保卫好自己的服务器是一件很重要的工作。
小站雷当(jzxue.Com)刚 刚上线,立马受到很多朋友的支持和拥护。一开始本来准备选择使用FTP作为下载服务器的,不过过了几天就发现很多都是通过盗链的方式来FTP下载。这下服 务器在持续性全速提供上传,但是网站的页面浏览量却少得可怜。因为FTP天生不能放盗链的特性所以只能考虑放弃使用,最后决定用HTTP下载来替代。

直接用HTTP服务器下载也不是很容易的事。最开始在IIS里面配置,IIS只能设定最大下载速度和最大连接数,这对于一些使用下载工具一来就开 50+线程霸道下载的朋友明显是防不住的。网上搜了N久就发现一个用Delphi写的看不懂的ISAPI Filter以及别的收费软件若干。试过之后都起不了作用,也便放弃了,最后发现Apache有这些开源的功能模块,最终打造出完美限制的HTTP下载服 务器。

首先说说完美限制的意思:防盗链、限制客户端下载线程数,限制下载带宽。下面一一介绍怎么在Apache里面实现这些功能。

防盗链

传统的防盗链都是通过Referer来判断用户来路的,不过这样的方法对于下载工具来说形同虚设,因为现在的下载工具早就能伪造Referer了。

现在一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击连接的时候服务器会验证这个验证码是否有效从而决定是否允许下载。或者就是用某些方法把文件实际地址进行伪装。不过我觉得这些都不怎么好用,我用了一个简单有效的方式来实现防盗链。

其实就是用Cookie,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。

首先在浏览页面的时候,会向客户端发送一个特别的Cookie,例如“Site=jzxue.Com“,盗链而来的将没有这个Cookie。

在Apache的httpd.conf文件里面搜索:

#LoadModule rewrite_module modules/mod_rewrite.so

把它前面的#去掉,再找到<Directory />块,在里面加入类似如下代码:

<Directory />
     # Other configurations …
    RewriteEngine On # 启动URL Rewrite引擎
   RewriteCond %{HTTP_COOKIE} !^.*(?:Site=jzxue.Com).*$ # 对于Cookie里面没有特殊记录的请求进行重定向
   RewriteRule ^.*$ error.html # 将非法访问重定向到错误页面
</Directory>

这样如果一个盗链而来的请求将会因为没有特殊Cookie而被重定向到错误页面,就算实际地址暴露也不怕。至于这个Cookie的内容是什么以及有效时间完全可以由管理员自己来设定,也就是说下载工具也没法伪造,从而防止了服务器资源被盗链的危险。

站长资讯网
. TAG: apache 防盗链
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言