小议动网论坛如何防止自动注册机注册与垃圾广告

来源:互联网 发布:dnf登录总是网络中断 编辑:程序博客网 时间:2024/05/07 03:39

动网论坛注册分3步:
1.reg.asp页面,即阅读同意页面,点击同意进入下一页
2.reg.asp?action=apply页面,填表单页面,不能直接打开
3.reg.asp?action=save页面,保存信息页面,不能外部提交
根据某些自动注册机直接读取验证码页面,并伪造来源直接提交到第3步,我们可以在第一步设置一个session值,在第2步和第3步来验证这个值
具体做法:
1.找到reg.asp页面,找到Sub reg_1()过程里面加上下面代码(表示在第一步的时候设置个验证session,里面保存他在打开第一个页面时候的当前系统时间):
session("myRegTime")=now()
2.找到Sub reg_2()过程里面加上下面的代码(表示第2步的时候验证一下,若没有这个session值就不让注册):
If session("myRegTime")="" Then
 Response.redirect "showerr.asp?ErrCodes=<li>目前系统维护中,请稍后访问.&action=OtherErr"
End If
3.第3步的时候我们也要验证session这个值,再加上另外3个判断:
1)发现有的注册机比较智能,可以模拟人的注册方式,所以上面单纯判断session为空就比较没有效果,因为注册机的注册过程比较快,所以判断一下它到第3步时候的系统时间减去第一步时候的时间如果小于20秒也是不正常的,拒绝它
2)发现最流行的论坛自动注册发贴机“营销利剑”它在自动注册的时候头像地址默认是“userface/image1.gif”,而这个地址实际上是不存在的,正确地址应该是“/Images/userface/image1.gif”,这应该是它的一个bug,正好判断一下限制它注册。
3)很多注册机在给别人使用的时候会加上自己的一些信息,一般在注册的时候加到签名里面,所以可以在签名里面判断这些关键字,发现了就不让注册

下面写具体代码,找到Sub reg_3()过程里面加上下面的代码:
If session("myRegTime")="" or DateDiff("s",session("myRegTime"),now())<20 Then
 Response.redirect "showerr.asp?ErrCodes=<li>目前系统维护中,请稍后访问.&action=OtherErr"
End If

If Request.Form("myface")="userface/image1.gif" Then
 Response.redirect "showerr.asp?ErrCodes=<li>目前系统维护中,请稍后访问.&action=OtherErr"
End If

Dim badPersonal,myCount
badPersonal="营销|vodcom.com|ite69.cn" '这边是要过虑的关键字数组,可以以后自己添加
badPersonal=split(badPersonal,"|")

For myCount = 0 to ubound(badPersonal)
 If Instr(Request.Form("personal"),badPersonal(myCount))>0 Then
  Response.redirect "showerr.asp?ErrCodes=<li>目前系统维护中,请稍后访问.&action=OtherErr"
  Response.End()
 End If
Next

转贴注明原创 http://www.topso.net