高手,帮修改下asp登陆防注入'or'='or'之类的代码
<htmlxmlns="http://www.w3.org/1999/xhtml"lang="gb2312"><head><title>管理登陆</title><scri...
<html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312">
<head>
<title>管理登陆</title>
<script language=javascript>
function checkform() {
if(form_add.admin_name.value==""){
alert("\用户名不能为空!请重新输入。");
return false;
}
if(form_add.admin_password.value==""){
alert("\密码不能为空!请重新输入。");
return false;
}
return true;
}
</script>
</head>
<body>
<form name="form_add" action="admin_check.asp" method="post" onsubmit="return checkform();">
用户名:<input type="text" name="admin_name" class="input">
密 码:<input type="password" name="admin_password" class="input">
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
上面是我的登陆界面代码,能被'or'='or'注入,怎样才能更好防注入?
我查了下资料:
(1)第一种:假设查询关键字为keys
keys=trim(request("keys"))
keys=replace(keys,"'","")
keys=replace(keys,"%","")
keys=replace(keys,"_","")
(2)第二种:过滤单引号的时候最好是把单引号转换成两个单引号。
name=Replace(trim(request.Form(“adminname”)),”‘”,”””)
pass=Replace(trim(request.Form(“password”)),”‘”,”””)
(3)第三种,在coon.asp文件加入下面代码(失败)。
<%
Query_Badword="'‖and‖select‖update‖chr‖delete‖%20from‖delete%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖="
On Error Resume Next
if request.QueryString<>"" then
Chk_badword=split(Query_Badword,"‖")
FOR EACH Query_Name IN Request.QueryString
for i8=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i8))<>0 Then
response.write "<SCRIPT>alert('小样,想干啥!');window.location='/'</SCRIPT>"
Response.End
End If
NEXT
NEXT
End if
%>
(3)第四种:过滤变量。
限制只允许输入特定字符。比如对于数字类型的变量就限制只能输入数字类型的数据。
问题:请问我贴的代码改怎么改呢?谢谢。 展开
<head>
<title>管理登陆</title>
<script language=javascript>
function checkform() {
if(form_add.admin_name.value==""){
alert("\用户名不能为空!请重新输入。");
return false;
}
if(form_add.admin_password.value==""){
alert("\密码不能为空!请重新输入。");
return false;
}
return true;
}
</script>
</head>
<body>
<form name="form_add" action="admin_check.asp" method="post" onsubmit="return checkform();">
用户名:<input type="text" name="admin_name" class="input">
密 码:<input type="password" name="admin_password" class="input">
<input type="submit" name="submit" value="提交">
</form>
</body>
</html>
上面是我的登陆界面代码,能被'or'='or'注入,怎样才能更好防注入?
我查了下资料:
(1)第一种:假设查询关键字为keys
keys=trim(request("keys"))
keys=replace(keys,"'","")
keys=replace(keys,"%","")
keys=replace(keys,"_","")
(2)第二种:过滤单引号的时候最好是把单引号转换成两个单引号。
name=Replace(trim(request.Form(“adminname”)),”‘”,”””)
pass=Replace(trim(request.Form(“password”)),”‘”,”””)
(3)第三种,在coon.asp文件加入下面代码(失败)。
<%
Query_Badword="'‖and‖select‖update‖chr‖delete‖%20from‖delete%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖="
On Error Resume Next
if request.QueryString<>"" then
Chk_badword=split(Query_Badword,"‖")
FOR EACH Query_Name IN Request.QueryString
for i8=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i8))<>0 Then
response.write "<SCRIPT>alert('小样,想干啥!');window.location='/'</SCRIPT>"
Response.End
End If
NEXT
NEXT
End if
%>
(3)第四种:过滤变量。
限制只允许输入特定字符。比如对于数字类型的变量就限制只能输入数字类型的数据。
问题:请问我贴的代码改怎么改呢?谢谢。 展开
2个回答
展开全部
将以下代码放入conn.asp文件就行了
<%
Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name
Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向
Err_Web = "Err.Asp" '出错时转向的页面
Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥=∥or"
'在这部份定义get非法参数,使用"∥"号间隔
Form_Badword="'∥%∥&∥*∥#∥(∥)∥=∥or∥and"
'在这部份定义post非法参数,使用"∥"号间隔
On Error Resume Next
'----- 对 get query 值 的过滤.
if request.QueryString<>"" then
Chk_badword=split(Query_Badword,"∥")
FOR EACH Query_Name IN Request.QueryString
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then
Select Case Err_Message
Case "1"
Response.Write "<Script Language=JavaScript>alert('传参错误!参数 "&name&" 的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');window.close();</Script>"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('传参错误!参数 "&name&"的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
End if
'-----对 post 表 单值的过滤.
if request.form<>"" then
Chk_badword=split(Form_Badword,"∥")
FOR EACH name IN Request.Form
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then
Select Case Err_Message
Case "1"
Response.Write "<Script Language=JavaScript>alert('出错了!表单 "&name&" 的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');window.close();</Script>"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('出错了!参数 "&name&"的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
end if
%>
追问
一步到位。
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询