|
马上注册,结交更多郧西好友
您需要 登录 才可以下载或查看,没有帐号?注册
x
防御这个灌水机,有几个方法:
<!--[if !supportLists]-->1) 修改论坛的表单名称,但这样工程大,容易出错,搞不好很容易连我们自己也登陆不了
<!--[if !supportLists]-->2) 添加管理员认证功能,用户注册后要向管理员发站内消息,经过管理员认可之后方能发贴,可惜这样毕竟技术含量较高,而且我们的管理员会累死
<!--[if !supportLists]-->3) 强化认证码,也是本人比较推荐用的方法,目前论坛上的认证码是4位的数字图片,用户输入后才能进入,可惜该数字图片过于容易识别,灌水机内置的OCR功能已经可以识别这些验证码,那么到底怎么做才好?下面来说一下我的意见:
这些验证码是由BBS根目录下的DvGetCodeasp随机产生的,修改这个文件就可以达到强化验证码的作用,asp代码用很多编辑器都可以编辑,打开后找下这段(10~14行):
学过vb的人都知道但我还是讲解一下,
Dim zNum,i,j
‘定义3个数字变量 zNum,i,j
Dim Ados,Ados1
Randomize timer
‘随机数初始化,每次取随机数都要进行这一步
zNum = cint(8999*Rnd+1000)
‘Rnd函数会返回一个0~1的小数随机数,那么这个8999 乘这个0~1的随机数后与1000相加取整,就会得到一个4位的随机整数了。也就是我们的验证码的关键生成步骤。
Session("GetCode") = zNum
‘把验证码放进session中,session是服务器上面的内存指针。
那么修改这4行就是关键!!
由于灌水机内置有OCR功能,也就是说它可以识别清晰图片上的文字,就算改成英文大概也是无济于事的,因此,可以考虑图片的模糊化,添加杂点或扭曲图像,
但是都是需要较为复杂的图像处理函数,对asp来说太吃力了。我的意见是:只修改一行:
Session("GetCode")= zNum
Session("GetCode")是最后用来和用户输入的验证码校验的变量,那么我们在这个地方做手脚,程序是无法判断的,比如说改成
Session("GetCode")= zNum+高岩的岁数
我们登陆的话,就需要根据验证码进行一定的
运算,虽然麻烦了点但这样的话,即使灌水机能够正确识别zNum显示出来的数字,它也不会知道Session("GetCode")已经不等于zNum
了,就算我们将运算规则写在验证码后面让正常用户按规定进行注册验证,发广告的人要重新修改灌水方法的话,这个灌水软件等于要重新编译了。这样就可以防止
它的恶意注册和发贴。 |
|