Jul
24
在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
欢迎转载,务必请记得保留出处,否则就如看帖不回帖一样,是不道德的!
本文地址:http://www.steveluo.name/isapi_rewrite-stop-leeching/
本文地址:http://www.steveluo.name/isapi_rewrite-stop-leeching/
您可能还对这些文章感兴趣:
No Comments
Make A CommentNo comments yet.
Comments RSS Feed TrackBack URL