防止垃圾广告和盗链的新方法
晚上我刚去打了2个小时游戏,就有人用程序狂灌我几百个垃圾留言广告。这时我也发现目前的防垃圾留言系统存在漏洞,那个发广告的家伙先用程序伪造了refer,然后每篇文章只有一个链接,这样就绕过了我设置的过滤,达到了大量发送垃圾信息的目的。
看来我目前的反垃圾留言程序还是有问题的。于是我经过一晚上的重新编码,增加了一个自动封IP地址的功能,如果判断半个小时内同一个IP地址留言中包含的超级连接数目超过10,就判断其为垃圾留言发送者,系统就自动封其IP地址,阻止这个IP地址继续发送留言。
现在看看目前的反垃圾系统是否能较好工作,如果还不行的话,只好启动验证码了,虽然个人感觉验证码会降低用户体验。这个反垃圾广告插件是基于原版Z-Blog 1.5系统的,如果你也在用Z-Blog 1.5这个系统,也可以下载使用,对于1.6的测试版,本程序应该也可以使用,不过我没测试过。
点击这里下载:Z-Blog反垃圾广告插件。
另外对于垃圾引用,我也想到一个新的对策,就是当系统接收到一个引用的时候,先取得那个地址的内容,如果包含本站的链接,说明是正常引用,否则就是垃圾引用。
最后对于图片的盗链,我终于无法继续忍受了,添加水印的方法基本上没有任何作用,过了这么长时间,盗链的情况依旧没有减少,盗链占用了太多的流量和系统资源,每天占用了10G多的流量,严重影响了我的博客的正常用户访问,因此我只好启用了ISAPI_Rewrite这个最终杀手来防止盗链,不过目前我允许bloglines、zhuaxia、google、baidu这几个网站引用我站图片,如果你也需要引用我站图片,请把域名告诉我,我审核后可以开放。
ISAPI_Rewrite的httpd.ini内容写的是下面内容,如果你也遇到盗链的困扰,建议可以参考一下:
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://(?:www\.williamlong\.info|www\.moon-blog\.com|www\.bloglines\.com|www\.zhuaxia\.com|www\.google\.com|cache\.baidu\.com)).+
RewriteRule .*\.(?:jpg|kmz|kml|zip) /block.gif [I,O]
注释:第二行里面的域名是允许链接图片的网站列表,目前我允许我自己的两个站和另外bloglines、zhuaxia、google、baidu这四个网站引用我站文件,其他网站的引用被禁止。
第三行是禁止引用的文件类型,包括jpg图片、Google Earth的kmz和kml、zip文件。当然,还可以增加其他类型,比如gif、rar等,因为我站没有那些文件,所以没有添加上去。
更新:晚上看了一下IIS日志,图片目录占用流量降到了1.5G,一天时间ISAPI_Rewrite阻挡了3万4千次盗链请求,真是个不错的成绩啊。