和垃圾留言决斗
这两天帮一个朋友修改网站的留言系统,网站是一个地方性的政府网站。朋友说已经将留言给关闭了,可是还是会有很多留言出现,导致数据库从原来的2m直冲80M 致使网站空间的急剧膨胀,无法添加新的有用的信息。
我将数据库下载下来,从垃圾留言的内容来看基本上都是一些外贸宣传的,如淘宝、短信群发、卖产品等,经过观察发现了他们的共同点,使用程序自带的广告留言判断功能将这些内容添加进去,又注意看了下时间,增加了一个发帖时间的判断,其代码如下:
if DateDiff("n",UpdateTime,Now())<2 then '设置两次评论间隔时间
response.Redirect "/"
response.End()
end if 及其它一些判断。
分析垃圾留言/帖子的特征:
1. 在内容上垃圾贴通常会带有一个固定域名的外部链接,或者带有QQ号码,手机号码,或者重复内容;
2. 在发帖频率上有可能是某个用户或者某个IP在短时间内发别多个帖子;
3. 在手段上高级一点的垃圾贴可能用发贴机,可能会使用不同ip,并附带破解验证码的程序。
目前对付垃圾留言/垃圾帖子的方法有以下几种:
1、使用比较多的就是验证码,验证码可以阻止一些发帖机器发帖,但是同时也增加了我们发正常帖子的成本;验证码也有好坏之分,比如GOOGLE的验证码就使用了变形、扭曲、杂色等特点,这使得发帖机器很难判别正确的内容。而有的只是使用了简单的杂色、噪点处理,破解程序很容易取出噪点分析出正确的结果;对比可知验证码的好坏也很重要。(就我个人来讲,是很不喜欢使用验证码的,但是就目前互联网形式来看,真是不用不行啊~哎!~)
2、通过分析发帖内容中的数字或者外网链接地址和规则来判断发帖是否是垃圾贴。我们可以做一个HttpModule来判断用户的每一个post提交,如果用户提交的内容中有外网地址或者数字,则记录下来这个发帖人的用户id,和ip地址,如果该用户在某个可配置的时间段之内重复提交有相同的数字或相同域名的外网地址,则可以认定该用户有发垃圾贴的嫌疑,并将此嫌疑用户发到监视列表,在该用户发表多于5次(可配置次数)包含疑似广告内容时,就可以拒绝该用户再发帖,并记录日志
3、如果是高质量的论坛,可以通过限制注册,申请注册的方式来做一些限制;或者在新用户发表正常内容超过n篇之后才允许用户直接发帖,在通过n篇认定的好帖之前,新用户所发帖子都默认审核后方可显示。
4、设置禁用词,对于已经确认为广告的词汇进行封禁。
5、购买第三方的组件来做分析处理垃圾贴的工作,这个据说很贵,也有效果。
如果您还有其它什么方法的话,不防也说明下!