我的后台管理有'or'='or'漏洞。请高手帮忙修复下!悬赏100分!

来源:百度知道 编辑:UC知道 时间:2024/06/08 13:24:32
代码如下:
<%

if session("counter")>2 then
Response.Write "<center><b>3次密码错误,请稍后再试!</b><a href='../index.htm'>返回浏览网站</a>!"
Response.end
end if

%>
<!-- #include file="dbconn.asp" -->
<%
timeout=7200
dim name
dim pass
if (not isnull(request("name"))) then
name=request.form("name")
pass=request.form("pass")
end if
set rs=server.createobject("adodb.recordset")
sql="select * from admin where name='"&name&"' and pass='"&pass&"'"
rs.open sql,conn,3,3
if not rs.eof and not rs.bof then
response.cookies("flag")=true
session("counter")=0
response.redirect "index.asp"
else
if session("counter")="" then

name=replace(request.form("name") ,"'","")
pass=replace(request.form("pass") ,"'","")
替换一下你上面的赋值语句。
不过这个只是针对防止了你上面说的漏洞,但其他的可能还有。
建议到网上下载个sql通用防注入即可

靠 有病
username=replace(trim(request("username")),"’","")
password=replace(trim(Request("password")),"’","")

把“’”给过滤了
如果你想用“’”当做密码 就用下面的方法

1、select * from user where user=’ " & User & "’ "
2、如果返回不为假,则取密码
pass=rs("passwd")
3、判断:if pass=password
4、得出结论。

在LOGIN.ASP文件中

下载360软件,用里面的修补漏洞功能修补试试^