注册 登录
编程论坛 ASP技术论坛

[求助]看下这句屏蔽ASP敏感字符的代码对不对啊?

lijiong520 发布于 2007-11-07 13:53, 850 次点击



http://www.xxx.com/xx.asp?num=5 比如这个网址
我写的屏蔽代码如下
if instr(request.querystring("num"),",")<>0 then  '如果在num后面找到"'" 则输出提示和结束ASP语句的执行!
response.write "请不要注入本站!"

response.End
end if

可我测试后,提示错误!
字符串的语法错误 在查询表达式 num=5' 中。
/分布显示/xx.asp, 第 26 行

想实现别人在参数后即Num=5的后面加上分号也不出现错误,而还是转到http://www.xxx.com/xx.asp?num=5这里!

给个其它的代码也行啊,谢谢了!

6 回复
#2
lijiong5202007-11-07 14:04
我把'和,弄错了,修改好后,只能屏蔽'号,其它的敏感字符却不能,谁给段代码能实现这样的效果!

如果num后面的参数不是 整数字的话则 提示错误,是的话,刚执行代码!

谢谢了
#3
永夜的极光2007-11-07 14:10
if not isnumeric(trim(requst.querystring("num"))) then
response.write("请不要修改传递的参数值!!")
else
'代码
end if
#4
lijiong5202007-11-07 18:05
永夜的极光 ,你说的对!再问下你 

1。可加上逗号,还出现错误 如下:
Microsoft JET Database Engine (0x80040E14)
语法错误 (逗号) 在查询表达式 'num=6,' 中。
/分布显示/xx.asp, 第 38 行
2. 比如,我数据库里只有10条记录,即Num后面的参数是从1-10!  
如果输入http://www.xxx.com/xx.asp?num=5  将5改为不在1-10之内的数后,将出现如下错误
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/分布显示/xx.asp
  
这又该怎样修改,谢谢你们,再给说一下吧, 谢谢版主!
#5
icebo2007-11-07 18:24
IF Rs.eof and Rs.bof Then
#6
永夜的极光2007-11-07 18:30
1,isnumeric这个函数可以判断是不是数字,如果不是数字,就不能运行到sql语句的地方,会出现这个错误,应该是你的代码写错了,连接数据库的语句,应该写在else和end if之间
2、打开记录集的时候,要先判断记录集是否为空

综合这两个问题,你的程序应该改成这样

if not isnumeric(trim(requst.querystring("num"))) then
response.write("请不要修改传递的参数值!!")
else
'假设已定义记录集rs
sql="select ************** where num=" & trim(request.querystring("num")
rs.open sql,conn,1,1
if rs.eof and rs.bof then
response.write("没有找到你所需要的记录")
else
response.write(rs("****"))
end if
rs.close
set rs=nothing
end if
#7
lijiong5202007-11-07 23:03
非常感谢 版主,经过你的解释,我已经弄好了!真谢谢你了,热心的版主! 顶

1