主题:  请看我的登陆源文件,怎样改才能过滤‘or'的漏洞?

维他命

职务:普通成员
等级:1
金币:0.0
发贴:59
注册:2002/3/8 21:13:09
#12002/3/11 13:23:49
我看登陆漏洞的教程看不懂,所以请高人看看我的源码,应该怎么改才能去除漏洞,以下是我的登陆源码:
---------------------------------
<%@LANGUAGE="VBSCRIPT"%>

<%
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_www_STRING
Recordset1.Source = "SELECT * FROM data"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0
%>
<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("textfield"))
If MM_valUsername <> "" Then
MM_fldUserAuthorization=""
MM_redirectLoginSuccess="hj1681.asp"
MM_redirectLoginFailed="err.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_www_STRING
MM_rsUser.Source = "SELECT admin, password"
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
MM_rsUser.Source = MM_rsUser.Source & " FROM pass WHERE admin='" & MM_valUsername &"' AND password='" & CStr(Request.Form("textfield2")) & "'"
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then
' username and password match - this is a valid user
Session("MM_Username") = MM_valUsername
If (MM_fldUserAuthorization <> "") Then
Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).value)
Else
Session("MM_UserAuthorization") = ""
End If
if CStr(Request.QueryString("accessdenied")) <> "" And true Then
MM_redirectLoginSuccess = Request.QueryString("accessdenied")
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginSuccess)
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%>


Untitled Document



管理员登陆页


(如果你不是管理员,请离开,否则后果自负)



用户名:


密 码:









<%
Recordset1.Close()
%>
---------------

谢谢!!!!!!!!!

编辑历史:[这消息被5D大叔编辑过(编辑时间2002-03-11 15:26:28)]


nnsk8

职务:普通成员
等级:1
金币:0.0
发贴:15
注册:2001/9/20 17:10:57
#22002/3/11 14:42:49
改这句

MM_rsUser.Source = MM_rsUser.Source & " FROM menber WHERE user='" & Replace(MM_valUsername,"'","''") &"' AND password='" & Replace(Request.Form("password"),"'","''") & "'"



nnsk8

职务:普通成员
等级:1
金币:0.0
发贴:15
注册:2001/9/20 17:10:57
#32002/3/11 14:44:13
错了,应当是这样,将USER改成admin

MM_rsUser.Source = MM_rsUser.Source & " FROM menber WHERE admin='" & Replace(MM_valUsername,"'","''") &"' AND password='" & Replace(Request.Form("password"),"'","''") & "'"



维他命

职务:普通成员
等级:1
金币:0.0
发贴:59
注册:2002/3/8 21:13:09
#42002/3/11 17:40:59
nnsk8在上个帖子中说
引用:
错了,应当是这样,将USER改成admin

MM_rsUser.Source = MM_rsUser.Source & " FROM menber WHERE admin='" & Replace(MM_valUsername,"'","''") &"' AND password='" & Replace(Request.Form("password"),"'","''") & "'"


十分感谢NNSK8这位朋友,我已经通过你的代码将我的漏洞补上了,太感谢你了!

以下是我改变的代码:
--------------------
MM_rsUser.Source = MM_rsUser.Source & " FROM pass WHERE admin='" & Replace(MM_valUsername,"'","''") &"' AND password='" & Replace(Request.Form("textfield2"),"'","''") & "'"

编辑历史:[这消息被hmily编辑过(编辑时间2002-03-12 13:56:41)]