http://sekee.com/zxrd.asp?action=modify&PName=%B2%CE%BF%BC%CF%FB%CF%A2&index=1
http://sekee.com/zxrd.asp?action=modify&PName=风云天下
http://sekee.com/zxrd.asp?action=modify&PName=风云天下&ckb_date=2012-05-04
http://sekee.com/zxrd.asp?action=modify&PName=%B2%CE%BF%BC%CF%FB%CF%A2&ckb_date=2012%2D05%2D04&index=1
为防止SQL注入,加上了GuoLv.asp文件进行过滤,但却把我自己要用的链接也过滤掉了,求助有没有办法即起到过滤作用,又能让我要的以上链接通过?
下面是GuoLv.asp文件的代码:
<%
dim sql_injdata
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=****>alert('请不要在参数中包含非法字符尝试注入!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=****>alert('请不要在参数中包含非法字符尝试注入!');history.back(-1)</Script>"
Response.end
end if
next
next
end if
%>
9 个解决方案
#1
这种过滤方法根本不靠谱,影响正常的功能。你可以去掉|%|
最好的方法是在查询数据的时候使用参数方法,而不是拼接sql语句
最好的方法是在查询数据的时候使用参数方法,而不是拼接sql语句
#2
用ADO对象插入数据,不要拼接SQL,用不着过滤的。
#3
能否用表ab的例子来说明一下呢?我想在一个页面上显示出表中的日期列表,点击日期则显示出当天全部的数据,请写出数据库连接、查询和数据输出的完整的代码,谢谢
表ab
日期 编号 数据
2014/1/9 1 A
2014/1/9 2 B
2014/1/10 1 C
2014/1/10 2 d
表ab
日期 编号 数据
2014/1/9 1 A
2014/1/9 2 B
2014/1/10 1 C
2014/1/10 2 d
#4
替换掉'就好了吧,构造sql注意验证数据有效性
PName=replace(request.querystring("PName")&"","'","")
ckb_date=request.querystring("ckb_date")&""
if not isdate(ckb_date) then
response.write "非法的日期"
response.end
end if
'构造sql语句执行查询
#5
如上表,如果不用链接传递参数应该怎么写呀?
#6
你这个肯定要传参数啊,不传参数你怎么知道调用哪些数据。。你验证好数据有效性就行了
文本类型的字段要去掉'或者替换为'',时间的用isdate判断下,数字就isnumeric判断
文本类型的字段要去掉'或者替换为'',时间的用isdate判断下,数字就isnumeric判断
#7
请你帮忙写出上面四个链接的数据有效性验证代码好吗?拜托拜托,哈哈,我不会写
#8
晕,#4不是给你代码了,去学下asp基础了,代码给了思路也说了还不会
#9
那个我试着放进去不行
#1
这种过滤方法根本不靠谱,影响正常的功能。你可以去掉|%|
最好的方法是在查询数据的时候使用参数方法,而不是拼接sql语句
最好的方法是在查询数据的时候使用参数方法,而不是拼接sql语句
#2
用ADO对象插入数据,不要拼接SQL,用不着过滤的。
#3
能否用表ab的例子来说明一下呢?我想在一个页面上显示出表中的日期列表,点击日期则显示出当天全部的数据,请写出数据库连接、查询和数据输出的完整的代码,谢谢
表ab
日期 编号 数据
2014/1/9 1 A
2014/1/9 2 B
2014/1/10 1 C
2014/1/10 2 d
表ab
日期 编号 数据
2014/1/9 1 A
2014/1/9 2 B
2014/1/10 1 C
2014/1/10 2 d
#4
替换掉'就好了吧,构造sql注意验证数据有效性
PName=replace(request.querystring("PName")&"","'","")
ckb_date=request.querystring("ckb_date")&""
if not isdate(ckb_date) then
response.write "非法的日期"
response.end
end if
'构造sql语句执行查询
#5
如上表,如果不用链接传递参数应该怎么写呀?
#6
你这个肯定要传参数啊,不传参数你怎么知道调用哪些数据。。你验证好数据有效性就行了
文本类型的字段要去掉'或者替换为'',时间的用isdate判断下,数字就isnumeric判断
文本类型的字段要去掉'或者替换为'',时间的用isdate判断下,数字就isnumeric判断
#7
请你帮忙写出上面四个链接的数据有效性验证代码好吗?拜托拜托,哈哈,我不会写
#8
晕,#4不是给你代码了,去学下asp基础了,代码给了思路也说了还不会
#9
那个我试着放进去不行