Board logo

标题: [讨论]大家怎么来做防轰炸式注册的问题? [打印本页]

作者: hxfly    时间: 2005-5-12 09:21     标题: [讨论]大家怎么来做防轰炸式注册的问题?

我只有这几种方法

我最常用的是1和5 我自己写的注册次数验证是用SESSION实现的 大家有什么好的方法共享一下吧 最好写上大体的思路和这种方法的优点 也欢迎写上这些方法的缺点

谢谢


作者: 无根泉    时间: 2005-5-12 09:30

好像没有什么好的办法,
用sessionID对方一关浏览器,还可以再加来注册,
用IP记录,还得考虑局域网的问题,
作者: 静夜思    时间: 2005-5-12 09:30

转动网的一篇帖子 出处:http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=956875&page=1

现在已有不少动网用户受到了一种称为“暴力营销”(168BBS)软件的骚扰。

该软件可以自动注册一个随机的新用户,并且发广告帖。根据作者声称:该软件可以在一小时内在2——5万个论坛群发广告。

官方似乎暂时还没有公布解决方案,于是我总结了几条解决的方法,供大家参考。

希望大家把自己改后的效果反馈一下,以便更好地对付群发。同时也希望大家把自己比较好的方法和大家分享。 不是每条都要挨着执行,也不是每条都一定有效,你可选用其中的几种方法。

根据大家的反馈,发现第二和第五两种方法最有效果,推荐使用。尤其是二!

一、更正验证码的易破解性

之前不论在7.0和7.1中,验证码都存在着缺陷,可以通过程序自动识别出验证码上的数字,于是没有真正起到验证码的作用。我们可以在注册时设置使用验证码,再按照以下方法修改。

验证码文件是Dv_GetCode.asp(7.1中)

找到这段代码:

If Rnd * 99 + 1 < cOdds Then ' 随机生成杂点 Response.BinaryWrite vColorData(0) Else

将其改为

If Rnd * 99 + 1 < cOdds Then ' 随机生成杂点 If Mid(vNumberData(vCode(ii)), i * 10 + iii, 1) Then Response.BinaryWrite vColorData(0) Else Response.BinaryWrite vColorData(1) End If Else

另外,找到以下代码

Const cOdds = 2 ' 杂点出现的机率

把2设置的稍大一些,建议设置为5~10。

以上部分的修改已经被很多实践证明效果很不明显。假如你有耐心,可以再试用手工修改验证码图片的方法(因麻烦故不推荐),这个一定有效果!如下:

这里我给出了一个自己做验证码的方法,里面有说明。 点击浏览该文件

这个是另一个朋友提供的验证码工具:http://bbs.dvbbs.net/dispbbs.asp?boardID=8&ID=958224&page=1

使用7.0的用户可以用7.1的这个文件覆盖原来的。如果你修改了验证码的图片,可以不再考虑杂点的问题。

二、更改提交表单的元素属性

此方法为“研究动网”朋友提出来的。它可以在不用验证码系统的条件下对付群发软件。

在论坛注册页面,用户名,密码文本框的 name属性分别默认为name和psw。我们可以修改其属性达到限制软件注册的效果。

具体方法如下,7.0和7.1均适用:

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

找到 <INPUT maxLength="{$NameMaxLength}" size=30 name=name>

将粉色的name改为其他值,比如改成 “name1”

然后打开reg.asp,以关键词Request.form("name")进行搜索

将其全部替换为Request.form("name1")

当然那个name1就是刚才你在风格模板里改的值

三、设置注册延时

设置新注册用户不能发帖,要一分钟或更多的时间后才能发帖。这样可以在一定程度上抵制非注册软件的攻击。但是对注册了的软件没有作用。

四、设置至少要有一个中文字符注册

这个方法并不太好,因为很多人实际上都比较喜欢用纯英文名。但是有不少朋友提出这个想法,这里还是列出在7.0和7.1里面的修改方法吧:

reg.asp文件,在蓝色代码

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 or Instr(username,"|")>0 Then Dvbbs.AddErrCode(19) Exit sub End If

下添加以下红色代码 Dim IsCHName IsCHName = False For i = 1 To Len(UserName) If Asc(Mid(UserName, i, 1)) < 0 Then IsCHName = True Exit For End If Next If Not IsCHName Then Response.redirect "showerr.asp?ErrCodes=<li>请至少输入一个中文字符。&action=OtherErr" End If

五、修改注册页面的地址

首先将论坛根目录下的reg.asp改名,比如改成reg1.asp,然后进入后台 / 风格界面模板总管理

在main_Style,Page_Login的“界面风格”中搜索“reg.asp”(注意7.0中不要把chkreg.asp替换了),全部替换成比如“reg1.asp”


作者: 静夜思    时间: 2005-5-12 09:39

我最近用的是更改验证码图片的文件名(默认的是Dv_GetCode.asp)。现在的暴力营销软件都有自动识别验证码的功能,除非验证码做的象申请QQ号的验证码那么复杂(汉字+杂点+字体歪歪扭扭),一般的加杂点的验证码都有被识别的可能。
作者: hxfly    时间: 2005-5-12 09:40

谢谢老大
自己也确实感觉到没有好的办法
所以要大家共享一下经验
作者: hxfly    时间: 2005-5-12 09:44

我自己写的一种方法
&lt;%
Randomize
num1=int(rnd*10)
num2=chr(int(rnd*26+97))
num3=int(rnd*10)
num4=chr(int(rnd*26+65))
session("ucode")=num1&amp;num2&amp;num3&amp;num4
%&gt;
注册的时候需要验证session
不知道这种方法是不是有效

这种方法可以在客户端自己写读取session的代码
然后在写注册机
只能对付菜鸟而已
作者: 静夜思    时间: 2005-5-12 09:56

如果是自己写的网站程序文本验证码或图片的验证码都可以防止。 还有动网的方法2和方法5效果也反映不错。注册机毕竟是机器,它没有眼睛,不会看网页只会看代码。把注册表单的用户名属性<input type=text name=name>中name改为其他的名称注册机往往就认不出来了
作者: 无根泉    时间: 2005-5-12 09:59

哈哈,
果然是树大招风呀,
高处不胜寒!!!
作者: hxfly    时间: 2005-5-12 10:14

呵呵
作者: griefforyou    时间: 2005-5-12 10:44

理论上讲,验证码是最好的办法,可以结合Email验证开通。

其它几项根本没有作用。注册机可以通过大量代理服务器来提交注册请求,每次注册都采用不同的IP地址。
作者: hxfly    时间: 2005-5-12 10:51

我认为
搜索数据库记录还是可以的
就是会加重服务器负担

随即+E-MAIL是有效
但是那样注册起来麻烦

这个问题要是放在发表文章的时候
不可能总是发送E-MAIL来验证吧?
作者: 静夜思    时间: 2005-5-12 11:02

怎么搜索数据库记录,搜索相同内容的文章吗?
一般只要把好注册这关就没问题。发表文章用验证码用户都会觉得烦琐的。
作者: hxfly    时间: 2005-5-12 11:14

数据库记录IP地址和注册时间
在相应的时间间隔内
同一IP地址不能注册

我认为注册机的IP可能是有限的
这样做是为了去掉SESSION认证的漏洞
就是关闭窗口在重开后SESSION失效的问题

还有
对数据库操作是有一个时间过程的
可以延缓注册
作者: ASP菜鸟    时间: 2005-5-12 11:21

看不懂你们说的是什么.
作者: hxfly    时间: 2005-5-12 11:33

你要是7-24的学习ASP的话
最多半个月就会看懂的
作者: islet    时间: 2005-5-12 12:45

无聊的事儿 还挺头疼
作者: yms123    时间: 2005-5-12 22:39

而且网通的ADSL的话,断开网络再重新联接就会换一个IP地址。所以说封IP作用不大。
作者: hxfly    时间: 2005-5-13 08:33

主要是防止洪水式注册
如果他断开再注册
也无所谓了

最主要的是拖延注册时间
作者: yms123    时间: 2005-5-13 21:45

不过好像可以用request对象中的服务器变量名称为REMOTE_HOST的变量来限制,这个变量返回的是客户端机器的主机名。比用IP限制的好处是,IP改动的话主机名不变的话就可以限制。这种方法对付ADSL用户的断线再上线的非法注册有一定效果,除非他每回更改主机名就没办法了。
作者: hxfly    时间: 2005-5-14 12:19

这个方法也不错
是不是可以用IP加主机名字限制的更好呢?

限制主机名字
可能不同的IP有相同的名字
限制IP可能局域网注册有问题

IP加主机就好了
又有了新思路
谢谢了




欢迎光临 编程论坛 (https://bbs.bccn.net/) Powered by Discuz! 6.1.0