主题:  ASP怎么样实现这种功能:帐户锁定

一笑

职务:普通成员
等级:1
金币:0.0
发贴:118
注册:2002/11/17 17:29:10
#12003/12/15 15:17:46
防止在线穷举破解,采用帐户锁定办法是最最有效的一种方法,即在用户输错密码指定的次数后,冻结帐户一段时间,使在线破解失效。
怎么样用ASP实现这种功能呢?
请教高人指点!!!
谢谢!!



沉默是金

职务:普通成员
等级:6
金币:11.2
发贴:4357
注册:2004/2/18 11:17:25
#22003/12/15 15:35:05
用一SESSION变量记载登陆次数,如果大于某个次数,限制该IP段的登陆一段时间.


难人一个……

一笑

职务:普通成员
等级:1
金币:0.0
发贴:118
注册:2002/11/17 17:29:10
#32003/12/15 17:02:41
arhui在上个帖子中说
引用:
用一SESSION变量记载登陆次数,如果大于某个次数,限制该IP段的登陆一段时间.

代码要怎么样写呀??可以说说吗?
不好意思,小弟是新手..



icerain

职务:普通成员
等级:1
金币:1.0
发贴:249
注册:2003/6/13 3:09:56
#42003/12/16 19:21:59
用一SESSION变量记载 错误的,同一用户名 的登陆次数



沉默是金

职务:普通成员
等级:6
金币:11.2
发贴:4357
注册:2004/2/18 11:17:25
#52003/12/16 20:56:02
yxrew在上个帖子中说
引用:
arhui在上个帖子中说
引用:
用一SESSION变量记载登陆次数,如果大于某个次数,限制该IP段的登陆一段时间.

代码要怎么样写呀??可以说说吗?
不好意思,小弟是新手..

你先写啦,写完了再贴上来,要是还有什么问题再来讨论啦


难人一个……

缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#62003/12/17 9:50:36
这个不是代码的问题
你先搞明白原理,在头脑中要有一个明确的概念,就是流程是怎么来控制的



Juven

职务:普通成员
等级:2
金币:1.0
发贴:474
注册:2002/2/27 15:43:49
#72003/12/18 0:50:13
我简单介绍一下代码:
新建一个表lockip,字段1为lockip,varchar型,字段2为locktime,字段属性smalldatetime
建立好登录表单,代码:

<%session("logintimes")=0%>
<form method="post" action="" name="theform">
用户名:<input name="admin_user" type="text" size="28">
密 码:<input name="admin_pwd" type="password" size="28">
<input type="submit" name="Submit" value="登 录">
<INPUT type=hidden value=CheckLogin name=method>
</form>


验证代码:
<%
'用户登录IP
ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
if ip = "" then ip = Request.ServerVariables("REMOTE_ADDR")

'从数据表lockip中删除超过2小时被封的IP
conn.execute("delete from lockip where DateDiff(""hh"",locktime,getdate())>2")
'session("logintimes")累加三次后,将当前用户的IP写进lockip数据表中
if session("logintimes")=3 then conn.execute("insert into lockip(lockip,locktime) values ('"&ip&"','"&now()&"')")

'验证登录IP
set rsd=conn.execute("Select * from lockip where lockip='"&ip&"'")
if not (rsd.eof and rsd.bof) then
response.write "你非法登录系统,已被取消登录权限!"
else
admin_user=trim(request.form("admin_user"))
admin_pwd=trim(request.form("admin_pwd"))
'这里与系统管理员的数据表进行验证,我不多加介绍了。
'..................
'关键是在系统表中密码字段pwd与admin_pwd验证时,如果密码错误,
'就设session("logintimes")=session("logintimes")+1,
'这点相当重要。累计三次密码错误就记录IP了。
end if
rsd.close
set rsd=nothing
%>


有问题再留言我吧。 :)
PS:不好意思,本来想用论坛的代码UBB格式用的,但发现很长的一段代码在[code]中显示后面字符被截取了,只能选择醒目点的颜色了。