主题:  用户登录的一个漏洞!

seconed6

职务:普通成员
等级:1
金币:1.0
发贴:189
注册:2002/9/17 13:05:00
#12002/10/23 17:11:29
一个登录系统里,已经通过“Retrict Access to Page"添加了用户验证,可是登录后我们可以在后面的变换名字来进入别的用户页面,进入修改等操作。如何修改这个漏洞呢!!??



咬一口

职务:普通成员
等级:1
金币:0.0
发贴:107
注册:2002/1/20 21:07:01
#22002/10/23 17:19:38
不理解。说清楚点。



我佛山人

职务:版主
等级:4
金币:16.0
发贴:2269
注册:2002/8/7 15:09:27
#32002/10/23 20:48:11
要用cookies或session保存用户的登陆信息



seconed6

职务:普通成员
等级:1
金币:1.0
发贴:189
注册:2002/9/17 13:05:00
#42002/10/24 10:55:50
我用的是UD,能不能详细点说,怎么做呢??



Syawn

职务:普通成员
等级:5
金币:10.0
发贴:2930
注册:2004/6/24 17:14:35
#52002/10/24 12:57:59
过滤,不要用url,
改用session



seconed6

职务:普通成员
等级:1
金币:1.0
发贴:189
注册:2002/9/17 13:05:00
#62002/10/24 13:01:35
怎么做啊!我还不是很了解啊!太笨!



笨鸡

职务:普通成员
等级:1
金币:0.0
发贴:137
注册:2002/6/11 17:21:57
#72002/10/24 16:57:57
大家要回答就详细点!不然不明白,等于白回答



seconed6

职务:普通成员
等级:1
金币:1.0
发贴:189
注册:2002/9/17 13:05:00
#82002/10/25 8:32:02
楼上兄弟说的极是啊!!麻烦各位高手还要不遗余力的回答啊!!
谢过 ,先!



songwin

职务:普通成员
等级:1
金币:0.0
发贴:17
注册:2002/7/23 17:55:55
#92002/10/25 10:26:07
如果你是用UD制作登陆的话,它会生成一个叫 session("MM_username")
的session变量,你可以利用它在其他页面来判断

给你看代码先

<% session("adminname")=request.Form("adminname") %>
<% if request.Form("adminname")="songwin" and request.Form("adminpwd")="songwin" then %>
<%response.Redirect("show.asp")%>
<%end if%>



seconed6

职务:普通成员
等级:1
金币:1.0
发贴:189
注册:2002/9/17 13:05:00
#102002/10/25 10:34:00
这样啊!!
我还想问问, 有没有办法, 不让网页地址里显示,后面的用户名啊!!



songwin

职务:普通成员
等级:1
金币:0.0
发贴:17
注册:2002/7/23 17:55:55
#112002/10/25 10:42:14
一般登陆系统都是用FROM提交的嘛 把表单的mehtod改成POST方式



seconed6

职务:普通成员
等级:1
金币:1.0
发贴:189
注册:2002/9/17 13:05:00
#122002/10/25 10:58:01
是这样的,我想让用户可以修改资料,用的是链接的形式:
">修改资料  这样的话,网页地址就会有用户名,用户名不是固定的!!
该怎么做呢!!??
有没有办法不让它显示用户名啊!?



songwin

职务:普通成员
等级:1
金币:0.0
发贴:17
注册:2002/7/23 17:55:55
#132002/10/25 11:05:46
目前大部分解决方法是用框架做来隐藏 但是象这个不是特别需要隐藏的吧



seconed6

职务:普通成员
等级:1
金币:1.0
发贴:189
注册:2002/9/17 13:05:00
#142002/10/25 11:29:54
那我到底应该怎么做呢?框架怎么用啊!! 有没有相关的资料啊?? 用你上述的代码好像不行啊?!!
用户名不是固定的啊!不同用户登录时,用户名不同啊!!



songwin

职务:普通成员
等级:1
金币:0.0
发贴:17
注册:2002/7/23 17:55:55
#152002/10/25 12:29:31
<% session("adminname")=request.Form("adminname") %>
<% if request.Form("adminname")="songwin" and request.Form("adminpwd")="songwin" then %>
<%response.Redirect("show.asp")%>
<%end if%>

这个当然不行了 你把“songwin”要换成你自己表中的记录集,并且循环一下。

<% do while not rsadmin.eof %>
<% if request.Form("adminname")=(rsadmin.Fields.Item("adminname").value) and request.Form("adminpwd")=(rsadmin.Fields.Item("adminpwd").value) then %>
<% response.Redirect("show.asp") %>

<% end if %>
<%
rsadmin.movenext
loop
%>
<% response.Redirect("admin2.asp") %>