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

[讨论]用cint判断是不是数字来防URL的SQL注入安全不安全呢

俺物空 发布于 2008-07-04 19:30, 1844 次点击
打比方网址是 topic.asp?id=123

判断id是不是数字的方法我记得有人专门写过一个函数,主要用到了isnumeric,也很简单

但是我想到了另一个更简单的办法
id=[bo]cint[/bo](request("id"))

当传过来的参数id含有注入字符的时候当然无法用int转换了,也就无法注入了。

大家认为这种方式安全吗?
3 回复
#2
tianyu1232008-07-04 20:56
但这样程序会出错

topic.asp?id=123'

id=cint(request("id"))
#3
hmhz2008-07-04 21:54
是的,程序会有出错提示,黑客要的就是你的出错提示来判别你的数据库是什么类型的,你的程序是否存在注入漏洞
所以还是需要进行判断一下
if not(IsNumeric(request("id")) then
#4
yms1232008-07-04 23:56
恩,最好判断一下数据类型
比如
Function IsInt(Data)
On Error Resume Next
   IF VarType(CInt)<>2 Then
      IsInt=False
   End IF
   IsInt=True      
End Function
IF not IsInt(request("id")) Then
   Response.Write "参数非数字"
End IF
1