利用 ISAPI_Rewrite 实现防盗链

2009-07-24    分类:英文站相关    0人评论226 views

ISAPI Rewrite 介绍及相关应用一文简单介绍了ISAPI Rewrite的功能以及URL重写方面的应用,现在再利用ISAPI Rewrite来实现简单而有效的防盗链功能。

不过经过笔者的测试,对于能够伪造Referer来源的程序(比如迅雷等下载工具),这个防盗链就形同虚设了。原理明白了就知道为什么了。

原理:判断Referer是否来自本地主机或在信任列表中的域名,否则就执行重写规则,重定向到一个文件作为防盗链提示。

这里用到了Rewrite Referer来判断URL来源,具体规则如下(分别包含了2.x和3.x版本的规则,请选择使用):

# For version 2.x
RewriteCond Host: ^(.+)$
RewriteCond Referer: ^(?!http://\\1.*).*$
RewriteCond Referer: ^(?!http://(.*\.google\.com|www\.steveluo\.name).*).*$
RewriteRule ^.*\.(?:gif|jpg|png|exe|rar|zip)$ /block.gif [I,O,N]

# For version 3.x
RewriteCond %{HTTP:Host} ^(.+)$
RewriteCond %{HTTP:Referer} ^(?!http://\\1.*).*$
RewriteCond %{HTTP:Referer} ^(?!http://(.*\.google\.com|www\.steveluo\.name).*).*$
RewriteRule ^.*\.(?:gif|jpg|png|exe|rar|zip)$ /block.gif [NC,N,O]


.*\.google\.com表示来自*.google.com的访问是被允许的,也就是所谓的信任列表,括号中可以写多个被信任的域名或者URL(URL只需在后面加上相应的目录或文件名即可,注意,使用斜杠时要“\\”来转义。),使用“|”来分隔每个信任URL。注意其中的点“.”需要用”\.”来转义。

参数:[I,O,N]中的N根据网上查到的资料说是不读取缓存,用来解决打开过盗链网站的图片以后,再打开自身网站仍然显示缓存中的盗链提示图片的问题。具体我也没试过,因为缓存机制实在太诡异,不知道什么时候会缓存而什么时候不缓存。。。I表示忽略大小写

这样,就用ISAPI Rewrite实现了简单的防盗链,对于普通图片防盗链来说是很有效的,因为几乎没人在打开网页时,会用迅雷去下载里面的图片。而且,大多数盗链网站还是以用户浏览为主,所以作为用户,只是看到了盗链提示而已,反而能为我们带来流量。

顺便提一下:盗链在英语中是hot link或leech

转载请注明:摩登坊 » 利用 ISAPI_Rewrite 实现防盗链

继续查看有关 的文章

我来说说

*

*

取消