以文本方式查看主题

-  华夏网·艺术论坛  (http://bbs.cnrr.cn/index.asp)
--  服务大厅  (http://bbs.cnrr.cn/list.asp?boardid=157)
----  [分享]动网论坛防止恶意注册的几个方法  (http://bbs.cnrr.cn/dispbbs.asp?boardid=157&id=38070)

--  作者:今夜未央
--  发布时间:2007/11/29 14:11:23
--  [分享]动网论坛防止恶意注册的几个方法

方法一:

1.打开reg.asp文件 
先找到: 

answer=md5(Request.form("answer"),16)
End If
其下面增加: 

\'ssa加入防止恶意注册必填项
If Request.form("Forumname")="" Then
Response.redirect "showerr.asp?ErrCodes=<li>您没有回答“防恶意注册问题答案”!&action=OtherErr"
Else
If Request.form("Forumname")<>Dvbbs.Forum_Info(0) Then
Response.redirect "showerr.asp?ErrCodes=<li>请回答正确的“防恶意注册问题答案”!&action=OtherErr"
End If
End If

再找到: TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))
在其下面添加一行: TempLateStr=Replace(TempLateStr,"{$Forumname}",Dvbbs.Forum_Info(0))

2.后台界面风格模板总管理page_login template.html(13)中找到 

<TD class=tablebody1><B>问题答案</B>:<BR>忘记密码的提示问题答案,用于取回论坛密码</TD>
<TD class=tablebody1>
<INPUT type=text size=30 name=answer>
</TD></TR>
后面添加: 

<TR>
<TD class=tablebody1><B>本论坛的中文名字是什么?</B><BR><font color=red>此条为防止恶意注册必填项!<br>
答案:</font><input type="text" value={$Forumname} onclick="oCopy(this)" readonly style="border-left:none; border-right:none; border-top:none; border-bottom: 1 solid blue;background:transparent;width:180px;color:blue"> <button style="font-size:12px; cursor:help; border-left:none; border-right:none; border-top:none; border-bottom:none; background:transparent" onclick="window.clipboardData.setData(\'text\',this.previousSibling.value)">
<font title="点击即可复制答案">(点击复制)</font></botton></TD>
<TD class=tablebody1>
<INPUT maxLength=50 size=30 name=Forumname></TD>
</TR>

<TR>
<TD class=tablebody1><B>OICQ号码</B>:<BR>强烈推荐填写,方便在论坛上互动联系<font color=red>(4--13位)<br><font color=green>请填写真实的QQ号,方便浩天与您联系</font></TD>
<TD class=tablebody1><INPUT maxLength=50 size=30 name=OICQ><font color=red>*</font>假的就别填写啦!</TD>
</TR>

红色的代码为注册增加QQ项如果不需要可以取消,只加蓝色的代码。

方法二:使用增强的验证码

这是一个比较正式使用比较广泛的做法。将你联想到手机强大的手写识别功能后,你就会对这种方法的可*性提出怀疑。但是如何更好地增大软件的识别难度,仍是大家努力的方向。 

方法三:让注册者回答固定问题

软件能识别验证码,但是绝对不会识别诸如以下文字:“请回答三加二等于几,用英文表示”。人工智能还达不到这种水平。基于这种思路,我们就可以让注册者回答问题。但这个问题绝对不要写成:“请回答本论坛的名字”,“今天是星期几”,“请复制以下文字”之类的易破解问题。你可以考虑让用户回答与论坛有关的话题。假设你的论坛是讨论金庸的。你可以这样说:“为证明你是一个金庸迷,请回答以下问题:《射雕英雄传》的东邪西毒南帝北丐中,西毒是谁”。 

我这里只给出了思路,由于时间关系,还没有写相应的实现代码。如果大家支持本帖,我会在下次补上。当然也希望热心人把修改方法提供给大家。 

方法四:让注册者回答随机问题

显然,这是上个思路的一点改进。至于在效果上是否有区别,还未实践证明。 

这里我给出了修改方法。蓝色代码为已存在代码,红色代码是新增加代码。 

1.
  
进入后台,风格界面模板总管理,page_login,template.html(13) 

<TR>
<TD class=tablebody1><B>密码问题</B>:<BR>忘记密码的提示问题</TD>

在此两句上面添加如下代码 

<TR>
<TD class=tablebody1>
<div style="color:red"><b>反论坛群发必填项:</b></div>
<div>为了防止群发软件的恶意注册,</div>
<div>请回答以下问题</div>
<div style="color:blue;font-size=18px"><b>{$EvilQuesion}<b></div>

</TD>
<TD class=tablebody1><INPUT size=30 name=evilanswer> </TD>
</TR>

2. 打开reg.asp,找到
<!--#include file="inc/md5.asp"-->
在其下添加
<!--#include file="inc/CheckEvil.asp"-->
找到
TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))
在其下添加
Randomize
Session("EvilID")=int(Rnd*QuesionNum) 
TempLateStr=Replace(TempLateStr,"{$EvilQuesion}", QuesionArray(Session("EvilID")))

找到
Else
quesion=Request.form("quesion")
End If
在其下添加
If Request.Form("EvilAnswer")="" Then
ErrCodes=ErrCodes+"<li>"+"请填写防恶意注册问题!"
End If

If Not CheckEvil(Request.Form("EvilAnswer")) Then
ErrCodes=ErrCodes+"<li>"+ "防恶意注册问题回答错误,请返回重试。"
End If

 

3. 增加一个新文件CheckEvil.asp,填写如下代码,并上传到论坛inc目录下,即 /inc/CheckEvil.asp。
<%
Dim QuesionArray(100)
Dim AnswerArray(100)
Dim QuesionNum
QuesionNum=5 \'请在这里正确设置问题的总数

Function CheckEvil(Answer)
Dim TrueAnswer
If Session("EvilID")="" Then
CheckEvil=False
Exit Function
End If
TrueAnswer=CStr(AnswerArray(Session("EvilID")))
If Answer=TrueAnswer Then
CheckEvil=true
End If

End Function

QuesionArray(0)="12的平方是多少?(数字)"
AnswerArray(0)="144"
QuesionArray(1)="中国最长的河流叫什么名字?"
AnswerArray(1)="长江"
QuesionArray(2)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(2)="低头思故乡"
QuesionArray(3)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(3)="低头思故乡"
QuesionArray(4)="中国史上唯一的女皇是谁?(提示:武?天)"
AnswerArray(4)="武则天"




%>


方法五:

一、修改reg.asp文件

1、找到235行-246行的内容

If Request.form("quesion")="" Then
ErrCodes=ErrCodes+"<li>"+template.Strings(11)
Else
quesion=Request.form("quesion")
End If
If Request.form("answer")="" Then
ErrCodes=ErrCodes+"<li>"+template.Strings(11)
ElseIf Request.form("answer")=Request.form("oldanswer") Then
answer=Request.form("answer")
Else
answer=md5(Request.form("answer"),16)
End If

在其下面插入

\'防止恶意注册添加项 by xintiao
If Request.form("Forumname")="" Then
Response.redirect "showerr.asp?ErrCodes=<li>您没有回答“防恶意注册问题答案”!&action=OtherErr"
Else
If Request.form("Forumname")<>"ABCD123" Then
Response.redirect "showerr.asp?ErrCodes=<li>请回答正确的“防恶意注册问题答案”!&action=OtherErr"
End If
End If

2、114行处找到——注意:这处可以不添加!

TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))

在其下面添加一行

TempLateStr=Replace(TempLateStr,"{$Forumname}","ABCD123")

二、然后再看风格处的修改,进入后台-界面风格模板总管理-page_login-风格 template.html(13)中找到

document.write (\'<INPUT type=password maxLength=16 size=30 name=pswc>\');

在其下面插入

 

document.write (\'<TR>\');
document.write (\'<TD class=tablebody1><font color=red><B>下面蓝色部分是什么?</B><BR>此为防止恶意注册必填项!请直接COPY答案:</font><font color=blue>ABCD123</font></TD>\');
document.write (\'<TD class=tablebody1>\');
document.write (\'<INPUT maxLength=50 size=30 name=Forumname></TD>\');
document.write (\'</TR>\');

 

至此结束,可以和那个JR的垃圾暴力说永别了!

大家也可以将ABCD123改成其他的字符串,让他想都想不到!!


--  作者:东方不败
--  发布时间:2008/9/18 15:20:51
--  
论坛一直受到疯狂的垃圾广告的骚扰,我采取了一些限制的方法,但都不令人满意。这次下决心处理这个问题,就检索网络,得到如下的处理方法。经过修改采用和观察检验,觉得很有效,让人开心和欣慰。

  以前,每天都会有50来个、有时候甚至更多的恶意注册的用户名;采取如下限制措施以后,就明显、有效地解决了问题,将注册机器人挡在了门外。因而,它们恶意注册以后自动发烂广告的现象,也就不会出现了。

  下面是我编辑过的处理方法和代码:

  实现的原理是:加一个必填当前日期+2的注册项。

  第一步:在论坛后台的“风格界面模板总管理/分页面模板(page_login)/界面风格/template.html(13)”里面的适当位置,加入限制代码(红色部分为增加的代码):

<INPUT maxLength=50 size=30 name=e_mail>
<input type=button value=\'检测帐号\' name=Button onclick="gopreview1()"></TD>
</TR>

<!--防止恶意注册-->
<TR>
<TD class=tablebody1><B>今天日期+2</B>:<BR>
限制恶意注册发垃圾广告 <font color=red><b>填写的日期范围:3-33</b></font></TD>
<TD class=tablebody1><INPUT type=text size=2 name=jintiandate maxlength=2>
<SCRIPT LANGUAGE=VBScript>
document.write "<font color=red> 今天是:"
document.write date()
document.write " (比如今天如果是2008-3-8,就填写10)</font>"
</script>
</TD>
</TR>
</table>
<!--结束-->

{$difference}
</table>

  第二步:在reg.asp文件如下的相对位置,加入判断代码(红色部分):

If Request.form("quesion")="" Then
  ErrCodes=ErrCodes+"<li>"+template.Strings(11)
Else
  quesion=Request.form("quesion")
End If

<!--防止恶意注册-->
If cint(Request.form("jintiandate"))<>datepart("d",date)+2 Then ErrCodes=ErrCodes+"<li>"+"请填写加2以后的日期!"
End If
<!--防止恶意注册结束-->

If Request.form("answer")="" Then
    ErrCodes=ErrCodes+"<li>"+template.Strings(11)


--  作者:东方不败
--  发布时间:2008/9/18 15:22:25
--  

动网论坛防止“暴力营销恶意注册发广告”的方法

一、修改reg.asp文件

1、找到235行-246行的内容

If Request.form("quesion")="" Then
ErrCodes=ErrCodes+"<li>"+template.Strings(11)
Else
quesion=Request.form("quesion")
End If
If Request.form("answer")="" Then
ErrCodes=ErrCodes+"<li>"+template.Strings(11)
ElseIf Request.form("answer")=Request.form("oldanswer") Then
answer=Request.form("answer")
Else
answer=md5(Request.form("answer"),16)
End If
在其下面插入

\'防止恶意注册添加项 by xintiao
If Request.form("Forumname")="" Then
Response.redirect "showerr.asp?ErrCodes=<li>您没有回答“防恶意注册问题答案”!&action=OtherErr"
Else
If Request.form("Forumname")<>"ABCD123" Then
Response.redirect "showerr.asp?ErrCodes=<li>请回答正确的“防恶意注册问题答案”!&action=OtherErr"
End If
End If

2、114行处找到——注意:这处可以不添加!

TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))
在其下面添加一行

TempLateStr=Replace(TempLateStr,"{$Forumname}","ABCD123")
二、然后再看风格处的修改,进入后台-界面风格模板总管理-page_login-风格 template.html(13)中找到

document.write (\'<INPUT type=password maxLength=16 size=30 name=pswc>\');

在其下面插入

 

document.write (\'<TR>\');
document.write (\'<TD class=tablebody1><font color=red><B>下面蓝色部分是什么?</B><BR>此为防止恶意注册必填项!请直接COPY答案:</font><font color=blue>ABCD123</font></TD>\');
document.write (\'<TD class=tablebody1>\');
document.write (\'<INPUT maxLength=50 size=30 name=Forumname></TD>\');
document.write (\'</TR>\');

 

至此结束,可以和那个JR的垃圾暴力说永别了!

大家也可以将ABCD123改成其他的字符串,让他想都想不到!!


--  作者:东方不败
--  发布时间:2008/9/18 15:23:46
--  

动网(Dvbbs)论坛防止机器注册

在 announcements.asp 的第一个 <% 下面加入代码:Session("AllowReg") = 1

在 reg.asp 的第一个 <% 下面加入代码:

If Session("AllowReg") <> 1 Then
 Response.Write ("注册前请先浏览论坛公告")
 Response.End
End iF


--  作者:东方不败
--  发布时间:2008/9/18 15:26:03
--  

动网论坛防止恶意注册的几个方法

方法一:

1.打开reg.asp文件 
先找到: 

answer=md5(Request.form("answer"),16)
End If
其下面增加: 

\'ssa加入防止恶意注册必填项
If Request.form("Forumname")="" Then
Response.redirect "showerr.asp?ErrCodes=<li>您没有回答“防恶意注册问题答案”!&action=OtherErr"
Else
If Request.form("Forumname")<>Dvbbs.Forum_Info(0) Then
Response.redirect "showerr.asp?ErrCodes=<li>请回答正确的“防恶意注册问题答案”!&action=OtherErr"
End If
End If

再找到: TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))
在其下面添加一行: TempLateStr=Replace(TempLateStr,"{$Forumname}",Dvbbs.Forum_Info(0))

2.后台界面风格模板总管理page_login template.html(13)中找到 

<TD class=tablebody1><B>问题答案</B>:<BR>忘记密码的提示问题答案,用于取回论坛密码</TD>
<TD class=tablebody1>
<INPUT type=text size=30 name=answer>
</TD></TR>
后面添加: 

<TR>
<TD class=tablebody1><B>本论坛的中文名字是什么?</B><BR><font color=red>此条为防止恶意注册必填项!<br>
答案:</font><input type="text" value={$Forumname} onclick="oCopy(this)" readonly style="border-left:none; border-right:none; border-top:none; border-bottom: 1 solid blue;background:transparent;width:180px;color:blue"> <button style="font-size:12px; cursor:help; border-left:none; border-right:none; border-top:none; border-bottom:none; background:transparent" onclick="window.clipboardData.setData(\'text\',this.previousSibling.value)">
<font title="点击即可复制答案">(点击复制)</font></botton></TD>
<TD class=tablebody1>
<INPUT maxLength=50 size=30 name=Forumname></TD>
</TR>

<TR>
<TD class=tablebody1><B>OICQ号码</B>:<BR>强烈推荐填写,方便在论坛上互动联系<font color=red>(4--13位)<br><font color=green>请填写真实的QQ号,方便浩天与您联系</font></TD>
<TD class=tablebody1><INPUT maxLength=50 size=30 name=OICQ><font color=red>*</font>假的就别填写啦!</TD>
</TR>

红色的代码为注册增加QQ项如果不需要可以取消,只加蓝色的代码。

方法二:使用增强的验证码

这是一个比较正式使用比较广泛的做法。将你联想到手机强大的手写识别功能后,你就会对这种方法的可*性提出怀疑。但是如何更好地增大软件的识别难度,仍是大家努力的方向。 

方法三:让注册者回答固定问题

软件能识别验证码,但是绝对不会识别诸如以下文字:“请回答三加二等于几,用英文表示”。人工智能还达不到这种水平。基于这种思路,我们就可以让注册者回答问题。但这个问题绝对不要写成:“请回答本论坛的名字”,“今天是星期几”,“请复制以下文字”之类的易破解问题。你可以考虑让用户回答与论坛有关的话题。假设你的论坛是讨论金庸的。你可以这样说:“为证明你是一个金庸迷,请回答以下问题:《射雕英雄传》的东邪西毒南帝北丐中,西毒是谁”。 

我这里只给出了思路,由于时间关系,还没有写相应的实现代码。如果大家支持本帖,我会在下次补上。当然也希望热心人把修改方法提供给大家。 

方法四:让注册者回答随机问题

显然,这是上个思路的一点改进。至于在效果上是否有区别,还未实践证明。 

这里我给出了修改方法。蓝色代码为已存在代码,红色代码是新增加代码。 

1.
  
进入后台,风格界面模板总管理,page_login,template.html(13) 

<TR>
<TD class=tablebody1><B>密码问题</B>:<BR>忘记密码的提示问题</TD>

在此两句上面添加如下代码 

<TR>
<TD class=tablebody1>
<div style="color:red"><b>反论坛群发必填项:</b></div>
<div>为了防止群发软件的恶意注册,</div>
<div>请回答以下问题</div>
<div style="color:blue;font-size=18px"><b>{$EvilQuesion}<b></div>

</TD>
<TD class=tablebody1><INPUT size=30 name=evilanswer> </TD>
</TR>

2. 打开reg.asp,找到
<!--#include file="inc/md5.asp"-->
在其下添加
<!--#include file="inc/CheckEvil.asp"-->
找到
TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))
在其下添加
Randomize
Session("EvilID")=int(Rnd*QuesionNum) 
TempLateStr=Replace(TempLateStr,"{$EvilQuesion}", QuesionArray(Session("EvilID")))

找到
Else
quesion=Request.form("quesion")
End If
在其下添加
If Request.Form("EvilAnswer")="" Then
ErrCodes=ErrCodes+"<li>"+"请填写防恶意注册问题!"
End If

If Not CheckEvil(Request.Form("EvilAnswer")) Then
ErrCodes=ErrCodes+"<li>"+ "防恶意注册问题回答错误,请返回重试。"
End If

 

3. 增加一个新文件CheckEvil.asp,填写如下代码,并上传到论坛inc目录下,即 /inc/CheckEvil.asp。
<%
Dim QuesionArray(100)
Dim AnswerArray(100)
Dim QuesionNum
QuesionNum=5 \'请在这里正确设置问题的总数

Function CheckEvil(Answer)
Dim TrueAnswer
If Session("EvilID")="" Then
CheckEvil=False
Exit Function
End If
TrueAnswer=CStr(AnswerArray(Session("EvilID")))
If Answer=TrueAnswer Then
CheckEvil=true
End If

End Function

QuesionArray(0)="12的平方是多少?(数字)"
AnswerArray(0)="144"
QuesionArray(1)="中国最长的河流叫什么名字?"
AnswerArray(1)="长江"
QuesionArray(2)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(2)="低头思故乡"
QuesionArray(3)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(3)="低头思故乡"
QuesionArray(4)="中国史上唯一的女皇是谁?(提示:武?天)"
AnswerArray(4)="武则天"




%>


方法五:

一、修改reg.asp文件

1、找到235行-246行的内容

If Request.form("quesion")="" Then
ErrCodes=ErrCodes+"<li>"+template.Strings(11)
Else
quesion=Request.form("quesion")
End If
If Request.form("answer")="" Then
ErrCodes=ErrCodes+"<li>"+template.Strings(11)
ElseIf Request.form("answer")=Request.form("oldanswer") Then
answer=Request.form("answer")
Else
answer=md5(Request.form("answer"),16)
End If

在其下面插入

\'防止恶意注册添加项 by xintiao
If Request.form("Forumname")="" Then
Response.redirect "showerr.asp?ErrCodes=<li>您没有回答“防恶意注册问题答案”!&action=OtherErr"
Else
If Request.form("Forumname")<>"ABCD123" Then
Response.redirect "showerr.asp?ErrCodes=<li>请回答正确的“防恶意注册问题答案”!&action=OtherErr"
End If
End If

2、114行处找到——注意:这处可以不添加!

TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))

在其下面添加一行

TempLateStr=Replace(TempLateStr,"{$Forumname}","ABCD123")

二、然后再看风格处的修改,进入后台-界面风格模板总管理-page_login-风格 template.html(13)中找到

document.write (\'<INPUT type=password maxLength=16 size=30 name=pswc>\');

在其下面插入

 

document.write (\'<TR>\');
document.write (\'<TD class=tablebody1><font color=red><B>下面蓝色部分是什么?</B><BR>此为防止恶意注册必填项!请直接COPY答案:</font><font color=blue>ABCD123</font></TD>\');
document.write (\'<TD class=tablebody1>\');
document.write (\'<INPUT maxLength=50 size=30 name=Forumname></TD>\');
document.write (\'</TR>\');

 

至此结束,可以和那个JR的垃圾暴力说永别了!

大家也可以将ABCD123改成其他的字符串,让他想都想不到!!


--  作者:东方不败
--  发布时间:2008/9/18 15:27:52
--  

动网论坛防止恶意注册最简单最有效的方法

   偶也是动网论坛爱好者的坚定支持者,以前也试过很多防止恶意注册的方法均不凑效.昨天晚上才把论坛挂上去,今天早上就出线了10多篇垃圾贴,恶意注册的。

  如果用邮箱验证,发贴审核等虽然可以对付注册机软件,但是这样子会给用户带来不必要的麻烦,只会让论坛失去人气.下面就推荐给大家一种有效的方法,在使用之前可以先看一下

演示 http://www.wangyeba.com/bbs/reg.asp
http://bbs.admin5.com/register.php  (同理对dz的论坛进行修改,点击以后注意后缀的改变成reg.php)

修改只需三步:

第一步:把原reg.asp更名为register.asp  (也可以更名为其它任意值,但不要与现有的文件重复)

第二步:在论坛根目录下添加一个新的reg.asp文件,代码如下

<!--#include file="conn.asp"-->
<!--#include file="inc/const.asp"-->
<!--#include file="inc/plus_check.asp"-->
<%
Dv_plus.name="reg"\'
Dv_plus.checklogin\'
Dvbbs.LoadTemplates("")\'
Dvbbs.Stats="论坛注册"
Dvbbs.Nav()
Dvbbs.Head_var 0,"","论坛注册","reg.asp"
\'
%>
<table cellpadding=3 cellspacing=1 align=center class=tableborder1><form action="register.asp" method="post">
<tr><th align=center>论坛注册</td></tr>
<tr><td class=tablebody1 align=left><input type="hidden" name="{$hidden}" value="{$hidden}">
<BR><BR><p align="center">继续注册为本站用户之前您必须先仔细阅读并点击同意<a href="register.asp">服务条款和声明</a>
</P>
<BR>
<BR></td></tr>
<tr><td align=center class=tablebody2><input type="submit" value="下一步" name="submit"></td></tr>
</form>
</table>
<%
Set Dv_plus=Nothing
Dvbbs.Footer \'
%>

第三步:登陆管理后台-风格界面模板总管理-编辑分页面模板(page_login)  -界面风格-template.html(12)-找到

<table cellpadding=3 cellspacing=1 align=center class=tableborder1><form action="reg.asp?action=apply" method="post">

把以上代码修改为

<table cellpadding=3 cellspacing=1 align=center class=tableborder1><form action="register.asp?action=apply" method="post">


到这里你已经大功告成,远离恶意注册了.

注意:红色的regster.asp可以是任意以.asp结尾的文件名,但是不能和已经存在的文件名相同,而且一定要前后一致,否则论坛将不能正常注册


--  作者:东方不败
--  发布时间:2008/9/18 15:31:20
--  

几种“动网论坛防恶意注册”的方法

方法一:

将reg.asp文件改成其它文件名如reg_new.asp传到论坛目录下面!

然后将reg.asp文件里的内容改成如下内容

<html>
<body>
<br><br>
<p align="center">要注册成为XXXXXXXXXX论坛的用户,请点击“<a href="reg_new.asp">下一步</a>”<br><br><br><br><br><br>
这是做是为了防止某些网络营销软件自动注册而影响到论坛的正常运行!
</body>
</html>

这样的话,当用户点击reg.asp的时候,必需要点"下一步"才能注册,而网络营销软件不会探测到reg_new.asp的,因为后台模板的代码里根本没有提到reg_new.asp这个真正的注册用户文件!

方法二:

让注册者回答随机问题

显然,这是上个思路的一点改进。至于在效果上是否有区别,还未实践证明。

这里我给出了修改方法。蓝色代码为已存在代码,红色代码是新增加代码。

1. 进入后台,风格界面模板总管理,page_login,template.html(13)

<TR>
<TD class=tablebody1><B>密码问题</B>:<BR>忘记密码的提示问题</TD>

在此两句上面添加如下代码

<TR>
  <TD class=tablebody1>
<div style="color:red"><b>反论坛群发必填项:</b></div>
<div>为了防止群发软件的恶意注册,</div>
<div>请回答以下问题</div>
<div style="color:blue;font-size=18px"><b>{$EvilQuesion}<b></div>

  </TD>
  <TD class=tablebody1><INPUT size=30 name=evilanswer> </TD>
</TR>

2. 打开reg.asp,找到
<!--#include file="inc/md5.asp"-->
在其下添加
<!--#include file="inc/CheckEvil.asp"-->
找到
TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))
在其下添加
Randomize
Session("EvilID")=int(Rnd*QuesionNum)
TempLateStr=Replace(TempLateStr,"{$EvilQuesion}", QuesionArray(Session("EvilID")))
找到
Else
quesion=Request.form("quesion")
End If
在其下添加
If Request.Form("EvilAnswer")="" Then
ErrCodes=ErrCodes+"<li>"+"请填写防恶意注册问题!"
End If

If Not CheckEvil(Request.Form("EvilAnswer")) Then
ErrCodes=ErrCodes+"<li>"+ "防恶意注册问题回答错误,请返回重试。"
End If

3. 增加一个新文件CheckEvil.asp,填写如下代码,并上传到论坛inc目录下,即 /inc/CheckEvil.asp。
<%
Dim QuesionArray(100)
Dim AnswerArray(100)
Dim QuesionNum
QuesionNum=5 \'请在这里正确设置问题的总数

Function CheckEvil(Answer)
Dim TrueAnswer
If Session("EvilID")="" Then
CheckEvil=False
Exit Function
End If
TrueAnswer=CStr(AnswerArray(Session("EvilID")))
If Answer=TrueAnswer Then
CheckEvil=true
End If

End Function


QuesionArray(0)="12的平方是多少?(数字)"
AnswerArray(0)="144"
QuesionArray(1)="中国最长的河流叫什么名字?"
AnswerArray(1)="长江"
QuesionArray(2)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(2)="低头思故乡"
QuesionArray(3)="“举头望明月”的下句是什么?(提示:低头??乡)"
AnswerArray(3)="低头思故乡"
QuesionArray(4)="中国史上唯一的女皇是谁?(提示:武?天)"
AnswerArray(4)="武则天"


%>

方法三:回答指定问题法

reg.asp文件

找到235行-246行的内容

If Request.form("quesion")="" Then
  ErrCodes=ErrCodes+"<li>"+template.Strings(11)
Else
  quesion=Request.form("quesion")
End If
If Request.form("answer")="" Then
    ErrCodes=ErrCodes+"<li>"+template.Strings(11)
ElseIf Request.form("answer")=Request.form("oldanswer") Then
  answer=Request.form("answer")
Else
  answer=md5(Request.form("answer"),16)
End If

在其下面插入

\'防止恶意注册添加项 by xintiao
If Request.form("Forumname")="" Then
  Response.redirect "showerr.asp?ErrCodes=<li>您没有回答“防恶意注册问题答案”!&action=OtherErr"
Else
  If Request.form("Forumname")<>Dvbbs.Forum_Info(0) Then
   Response.redirect "showerr.asp?ErrCodes=<li>请回答正确的“防恶意注册问题答案”!&action=OtherErr"
  End If
End If

2、114行处找到

TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))

在其下面添加一行

TempLateStr=Replace(TempLateStr,"{$Forumname}",Dvbbs.Forum_Info(0))

然后再看风格处的修改,后台界面风格模板总管理page_login  template.html(13)中找到

document.write (\'<INPUT type=password maxLength=16 size=30 name=pswc>\');

在其下面插入

document.write (\'<TR>\');
document.write (\'<TD class=tablebody1><B>本论坛的中文名称是什么?</B><BR><font color=red>此条为防止恶意注册必填项!答案:</font><font color=blue>{$Forumname}</font></TD>\');
document.write (\'<TD class=tablebody1>\');
document.write (\'<INPUT maxLength=50 size=30 name=Forumname></TD>\');
document.write (\'</TR>\');

方法四:彻底解决方案-授权注册码方案(较长)

1.后台->login->template.html(13)

红色部分为添加内容

<!--reg.asp##注册资料填写部分 ## Sp3 2005/1/26-->

<script language="JavaScript" src="inc/Mymodify.js"></script>

<FORM name=theForm action=reg.asp?action=save method=post>

<table cellpadding=3 cellspacing=1 align=center class=tableborder1>

<TR align=middle><Th colSpan=2 height=24>新用户注册</TH></TR>

<TR>

<TD width="40%" class=tablebody1>

<B>用户名</B>:<BR>注册用户名长度限制为{$NameLimLength}-{$NameMaxLength}字节</TD>

<TD width="60%"  class=tablebody1><INPUT maxLength="{$NameMaxLength}" size=30 name=name value={$name}></TD>

</TR>

……

<TR>

<TD class=tablebody1><B>Email地址</B>:<BR>请输入有效的邮件地址,这将使您能用到论坛中的所有功能</TD>

<TD class=tablebody1>

<INPUT maxLength=50 size=30 name=e_mail value={$e_mail}><input type=button value=\'检测帐号\' name=Button onclick="gopreview()"></TD>

</TR>

<TR>

<TD class=tablebody1><B>注册授权码</B>:<BR>请输入与邮件地址对应的授权码,如果未取得注册授权码,请点击“获取授权码”来取得注册授权码</font></TD>

<TD class=tablebody1>

<INPUT maxLength=50 size=30 name=e_id value={$e_id}><input type=button value=\'获取授权码\' name=Button onclick="gochkid()"></TD>

</TR>

</table>

………

<form name=preview action=reg.asp?t=1 method=post target=preview_page>

<input type=hidden name=username value=><input type=hidden name=email value=>

</form>

<form name=chkid action=chkid.asp method=post target=preview_page>

<input type=hidden name=username value=><input type=hidden name=email value=>

</form>

2.后台->login->添加template.html(25),内容:

<p>

<table cellpadding=3 cellspacing=1 align=center class=tableborder1>

<TR align=middle> <Th height=24>授权注册码发送情况</Th></TR>

<TR> <Td class=tablebody1 height=24>{$Reportmsg}</TD></TR>

</TABLE>

3.后台->login->添加template.html(26),内容:

<!--reg.asp##授权码发送邮件-->

<html>

<title>授权注册码信息</title>

<body>

<TABLE border=0 width=\'95%\' align=center><TBODY><TR>

<TD valign=middle align=top>

       东方不败,您好:<br><br>

欢迎您注册本论坛,我们将提供给您最好的论坛服务!<br>

下面是您的注册授权信息:<br>

注  册  名:东方不败<br>

注 册 邮 箱:{$e_mail}<br>

注册授权码:{$e_id}<br>

<br><br>

请点击<a href=http://www.mjtd.com/bbs/reg.asp?action=apply&name=东方不败&e_mail={$e_mail}&e_id={$e_id}><font color=red><b>继续注册</b></font></a>并填写其它相关内容以成为正式会员:<br>

<br><br>

<center><font color=red>再次感谢您注册本系统,让我们一起来建设这个网上家园!</font>

</TD></TR></TBODY></TABLE><br><hr width=95% size=1>

<p align=center>{$copyright} &nbsp;&nbsp; {$version}</p>

</body>

</html>

4.reg.aspSub reg_2()

Sub reg_2()

       Dim grouploopinfo,TempLateStr,Rs

       Dim uname,uemail,ueid

       uname=request("name")

       uemail=request("e_mail")

       ueid=request("e_id")

       TempLateStr=template.html(13)

……

       TempLateStr=Replace(TempLateStr,"{$user_education}",Selectinfo(3))

       TempLateStr=Replace(TempLateStr,"{$user_character}",Selectinfo(4))

       TempLateStr=Replace(TempLateStr,"{$user_belief}",Selectinfo(5))

       if uname<>"" then TempLateStr=Replace(TempLateStr,"{$name}",uname)

       if uemail<>"" then TempLateStr=Replace(TempLateStr,"{$e_mail}",uemail)

       if ueid<>"" then TempLateStr=Replace(TempLateStr,"{$e_id}",ueid)

       TempLateStr=Replace(TempLateStr,"{$name}","")

       TempLateStr=Replace(TempLateStr,"{$e_mail}","")

       TempLateStr=Replace(TempLateStr,"{$e_id}","")

       Response.Write TempLateStr

End Sub

5.reg.asp Reg_3()

       If IsValidEmail(Trim(Request.form("e_mail")))=false Then

              ErrCodes=ErrCodes+"<li>"+template.Strings(30)

       Else

              If not Isnull(Dvbbs.Forum_Setting(52)) and Dvbbs.Forum_Setting(52)<>"" and Dvbbs.Forum_Setting(52)<>"0" Then

                     Dim SplitUserEmail

                     SplitUserEmail=Split(Dvbbs.Forum_Setting(52),"|")

                     For i=0 to Ubound(SplitUserEmail)

                            If Instr(Request.form("e_mail"),SplitUserEmail(i))>0 Then

                            ErrCodes=ErrCodes+"<li>"+template.Strings(31)

                            Exit Sub

                            End If

                     Next

              End If

              useremail=Dvbbs.CheckStr(Trim(Request.form("e_mail")))

       End If

后加上:

\'mjtd.com add begin

       If Request.form("e_id")="" Then

              ErrCodes=ErrCodes+"<li>"+template.Strings(50)

       Else

              If trim(Request.form("e_id"))<>md5(useremail & username & IdPlus,16) Then

                     ErrCodes=ErrCodes+"<li>"+template.Strings(51)

              end if

       End If

\'mjtd.com add end

6inc/mymodify.js的最后加上:

function gochkid()

{

document.chkid.username.value=document.theForm.name.value;

document.chkid.email.value=document.theForm.e_mail.value;

var popupWin = window.open(\'\', \'preview_page\', \'scrollbars=yes,width=500,height=300\');

document.chkid.submit()

}

7.增加文件chkid.asp,用于检测及发送授权码。文件内容如下:

<!-- #include file="conn.asp" -->
<!-- #include file="inc/const.asp" -->
<!-- #include file="inc/chkinput.asp" -->
<!-- #include file="inc/md5.asp"-->
<!-- #include file="inc/Email_Cls.asp"-->
<%
Dvbbs.LoadTemplates("login")
Dim Stats,ErrCodes,TempLateStr
Dim username,i,sql,Rs,useremail
Dim mailbody,sendmsg,topic
Dim e_id
Stats=split(template.Strings(25),"||")
Dvbbs.Stats=Stats(0)
dvbbs.head()
ErrCodes=""
If Request.form("username")="" Then ErrCodes=ErrCodes+"<li>"+template.Strings(6)
If strLength(Request.form("username"))>Cint(Dvbbs.Forum_Setting(41)) or strLength(Request.form("username"))<Cint(Dvbbs.Forum_Setting(40)) Then
  TempLateStr=template.Strings(28)
  TempLateStr=Replace(TempLateStr,"{$RegMaxLength}",Dvbbs.Forum_Setting(41))
  TempLateStr=Replace(TempLateStr,"{$RegLimLength}",Dvbbs.Forum_Setting(40))
  ErrCodes=ErrCodes+"<li>"+TempLateStr
  TempLateStr=""
Else
  username=Dvbbs.CheckStr(Trim(Request.form("username")))
  If Instr(username,"=")>0 or Instr(username,"%")>0 or Instr(username,chr(32))>0 or Instr(username,"?")>0 or Instr(username,"&")>0 or Instr(username,";")>0 or Instr(username,",")>0 or Instr(username,"\'")>0 or Instr(username,",")>0 or Instr(username,chr(34))>0 or Instr(username,chr(9))>0 or Instr(username,"")>0 or Instr(username,"$")>0 Then
  ErrCodes=ErrCodes+"<li>"+template.Strings(46)
  End If
  Dim RegSplitWords
  RegSplitWords=split(Dvbbs.forum_setting(4),",")
  for i = 0 to ubound(RegSplitWords)
   If instr(username,RegSplitWords(i))>0 Then
    ErrCodes=ErrCodes+"<li>"+template.Strings(46)
   End If
  next
End If
If Request("action")="" Then
If IsValidEmail(trim(Request.form("email")))=false then
     ErrCodes=ErrCodes+"<li>"+template.Strings(30)
Else
  useremail=Dvbbs.checkStr(Request.form("email"))
End If
End If
If ErrCodes<>"" Then Showerr()
if ErrCodes="" then
  If cint(Dvbbs.Forum_Setting(24))=1 Then
  If Request("action")="" Then
   sql="select username,useremail from [Dv_user] where username=\'"&username&"\' or useremail=\'"&useremail&"\'"
  Else
   sql="select username,useremail from [Dv_user] where username=\'"&username&"\'"
  End If
  Else
  sql="select username,useremail from [Dv_user] where username=\'"&username&"\'"
  End If
  Set Rs=Dvbbs.execute(sql)
  If Not rs.eof and not rs.bof then
   If cint(Dvbbs.Forum_Setting(24))=1 And Rs("useremail")=useremail Then
    If Request("action")="" Then
    ErrCodes=ErrCodes+"<li>"+template.Strings(44)
    Else
    ErrCodes=ErrCodes+"<li>"+template.Strings(43)
    End If
   Else
    ErrCodes=ErrCodes+"<li>"+template.Strings(44)
   End If
  End If
  If ErrCodes<>"" Then Showerr()
  Rs.close:Set Rs=Nothing
End If

If ErrCodes="" Then
  e_id = md5(useremail & username & IdPlus,16)
  If Dvbbs.Forum_Setting(47)=1 Then
   on error resume next
   \'发送注册邮件
   Dim getpass
   topic=Replace(template.Strings(35),"{$Forumname}",Dvbbs.Forum_Info(0))
   If cint(Dvbbs.Forum_Setting(23))=1 Then
    getpass=Dvbbs.htmlencode(rndnum)
   Else
    getpass=Dvbbs.htmlencode(Request.form("psw"))
   End If
   mailbody = template.html(26)
   mailbody = Replace(mailbody,"东方不败",Dvbbs.HtmlEncode(username))
   mailbody = Replace(mailbody,"{$e_mail}",useremail)
   mailbody = Replace(mailbody,"{$e_id}",e_id)
   mailbody = Replace(mailbody,"{$copyright}",Dvbbs.Forum_Copyright)
   mailbody = Replace(mailbody,"{$version}",Dvbbs.Forum_Version)

   Dim DvEmail
   Set DvEmail = New Dv_SendMail
   DvEmail.SendObject = Cint(Dvbbs.Forum_Setting(2)) \'设置选取组件 1=Jmail,2=Cdonts,3=Aspemail
   DvEmail.ServerLoginName = Dvbbs.Forum_info(12) \'您的邮件服务器登录名
   DvEmail.ServerLoginPass = Dvbbs.Forum_info(13) \'登录密码
   DvEmail.SendSMTP = Dvbbs.Forum_info(4)   \'SMTP地址
   DvEmail.SendFromEmail = Dvbbs.Forum_info(5)  \'发送来源地址
   DvEmail.SendFromName = Dvbbs.Forum_info(0)  \'发送人信息
   If DvEmail.ErrCode = 0 Then
    DvEmail.SendMail useremail,topic,mailbody \'执行发送邮件
    If DvEmail.Count>0 Then
     sendmsg=template.Strings(52)
    Else
     sendmsg=template.Strings(49)
    End If
   Else
    sendmsg=template.Strings(49)
   End If
   Set DvEmail = Nothing

  Else
   sendmsg = template.Strings(48)
  End If
  ErrCodes =  Replace(sendmsg,"{$e_id}",e_id)
  
  Response.Write Replace(template.html(25),"{$Reportmsg}",ErrCodes)
End If
Call Dvbbs.footer()


\'显示错误信息
Sub Showerr()
Dim Show_Errmsg
If ErrCodes<>"" Then
  Show_Errmsg=Dvbbs.mainhtml(14)
  ErrCodes=Replace(ErrCodes,"{$color}",Dvbbs.mainSetting(1))
  Show_Errmsg=Replace(Show_Errmsg,"{$color}",Dvbbs.mainSetting(1))
  Show_Errmsg=Replace(Show_Errmsg,"{$errtitle}",Dvbbs.Forum_Info(0)&"-"&Dvbbs.Stats)
  Show_Errmsg=Replace(Show_Errmsg,"{$action}",Dvbbs.Stats)
  Show_Errmsg=Replace(Show_Errmsg,"{$ErrString}",ErrCodes)
End If
Response.write Show_Errmsg
End Sub
%>

8.在conn.asp文件的Startime = Timer()前加上:

Const IdPlus = "mjtd.com"

其中mjtd.com可更换为任意字符。

9.模板->分页模板(page_login)->语言包 中添加
template.Strings(48):
<li>系统未开启邮件功能,请记录下你的授权注册码:<b>{$e_id}。</b></li>
template.Strings(49):
<li>由于系统错误,给您发送的授权注册码未成功,请记录下你的授权注册码:<b>{$e_id}。</b></li>
template.Strings(50):
请输入授权注册码,如未获取,请点击获取授权注册码。
template.Strings(51):
授权注册码必须与用户名和邮件地址相对应的,请填写与用户名及邮件地址相对应的号码。
template.Strings(52):
<li>您的授权注册码已经发往您的邮箱,请注意查收。</li>

该方法将用户名和用户邮箱以及自定义的一个字符串进行加密运算形成了授权注册码,而自定义字符串用户可按照自己网站进行修改。所以不可能会被破的。


--  作者:东方不败
--  发布时间:2008/9/18 15:32:43
--  

   偶也是动网论坛爱好者的坚定支持者,以前也试过很多防止恶意注册的方法均不凑效.昨天晚上才把论坛挂上去,今天早上就出线了10多篇垃圾贴,恶意注册的。

  如果用邮箱验证,发贴审核等虽然可以对付注册机软件,但是这样子会给用户带来不必要的麻烦,只会让论坛失去人气.下面就推荐给大家一种有效的方法,在使用之前可以先看一下

演示 http://www.wangyeba.com/bbs/reg.asp 
http://bbs.xx521.com/register.php  (同理对dz的论坛进行修改,点击以后注意后缀的改变成reg.php)

修改只需三步:

第一步:把原reg.asp更名为register.asp  (也可以更名为其它任意值,但不要与现有的文件重复)

第二步:在论坛根目录下添加一个新的reg.asp文件,代码如下

<!--#include file="conn.asp"-->
<!--#include file="inc/const.asp"-->
<!--#include file="inc/plus_check.asp"-->
<%
Dv_plus.name="reg"\'
Dv_plus.checklogin\'
Dvbbs.LoadTemplates("")\'
Dvbbs.Stats="论坛注册"
Dvbbs.Nav()
Dvbbs.Head_var 0,"","论坛注册","reg.asp"
\'
%>
<table cellpadding=3 cellspacing=1 align=center class=tableborder1><form action="register.asp" method="post">
<tr><th align=center>论坛注册</td></tr>
<tr><td class=tablebody1 align=left><input type="hidden" name="{$hidden}" value="{$hidden}">
<BR><BR><p align="center">继续注册为本站用户之前您必须先仔细阅读并点击同意<a href="register.asp">服务条款和声明</a>
</P>
<BR>
<BR></td></tr>
<tr><td align=center class=tablebody2><input type="submit" value="下一步" name="submit"></td></tr>
</form>
</table>
<%
Set Dv_plus=Nothing
Dvbbs.Footer \'
%>

第三步:登陆管理后台-风格界面模板总管理-编辑分页面模板(page_login)  -界面风格-template.html(12)-找到

<table cellpadding=3 cellspacing=1 align=center class=tableborder1><form action="reg.asp?action=apply" method="post">

把以上代码修改为

<table cellpadding=3 cellspacing=1 align=center class=tableborder1><form action="register.asp?action=apply" method="post">


到这里你已经大功告成,远离恶意注册了.

注意:红色的regster.asp可以是任意以.asp结尾的文件名,但是不能和已经存在的文件名相同,而且一定要前后一致,否则论坛将不能正常注册

<script></script>
--  作者:客人
--  发布时间:2008/12/15 13:21:20
--  
我是一个叫静静的女孩,前几天,我晚自习回家,被一辆大卡车撞了,司机将我的尸体抛入了路径边的小河里,让后逃走了,你看见了这条消息后,请将她发给4个论坛,如果没有发,你的妈妈会在1个月后被车撞,你的爸爸会的绝症,如果你照着上面做了,在5天后,你喜欢的人也会喜欢你,这条消息太毒了,我不得不发

--  作者:xiayuyouxiax
--  发布时间:2012/5/31 15:16:52
--  
商贸城当初的设计,就是一个完整的生活圈。不但有商铺,还有住宅楼。这也是后世通行的作法,一个成熟的商贸城,同时也会是一个成天津癫痫病医院chzzuiainideren熟的生活小区。唐秋叶在商贸城搞超市,眼光很是独到。现在唐秋叶的主要精力。基本上都放在超市的运作之上了,过一段时间,准备将超市开到久安来。
  对此,刘圌伟鸿是很支持的。
  根据他的记忆,无论是超市天津癫痫病医院chzzuiainideren还是电器城。俱皆是能够造就巨无霸的行业。唐秋叶同时搞这两样,在国内属于起步很早的。完全有望在将来构筑出一个零售业的超级帝圌国。伍百达忙即说道:“嘿嘿,刘书圌记慧眼如炬,什么都瞒不过你。我确实是还想在久安继续做生意……啊,刘书圌记,是这样的,我觉得吧,这几年久安的社圌会治安太天津癫痫病医院chzzuiainideren差,基本上外边的人都不敢过来做生意,市面上很多商品都很缺乏。这么大的一个久安市,完全没有像样的建材和五金店铺。很多久安的客人,都是到我们浩阳那边去进货,路程比较远,东西买少了,光是运费都不划算了。买多了的话,又用不上,不是很方便啊。我就在想,在久安搞建材和五金批发,还是很有前景的。再说了,久安这天津癫痫病医院chzzuiainideren几年的经济发展,停滞不前,相信今后应该有一个比较大的发展。”
  这就是所谓的生意经了。伍百达等闲不会跟别人聊这个话题,这可都是他经商多年的心得啊。不过在刘圌伟鸿面前,伍百达自然是知无不言言无不尽。