搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

判断Web数据库方式的一个小经验

很多站都是这样防止或是过滤asp提交的参数的
if isnumeric(id) then
response.write "yes!"
call sql_query(id)
else
response.write "error id"
response.end
end if

这样就不论怎么样,如果出现非数值就出现错误,很直接的防范,没办法出错,也没办法得到数据库类型
但是其实我们还是有方法的,
比如这个id是由xxx.asp提交的
xxx.asp?id=1
我们就在后面加上38个以上的数字,比如0
xxx.asp?id=100000000...
这样就能得让上面那段asp在执行sql_query的时候出错了
提示如下
引用内容:
microsoft ole db provider for sql server 错误 '80040e57'

数字 '100000000000000000000000000000000000000000000000000000000000000000' 超出了数字表示范围(最大精度为 38 位有效数字)。

/announce.asp,行 19


明白了没?我们让数据库出错了.可见isnumeric的防范并不是彻底的.
其实原因也很简单:sql中定义 numeric数据的精度最大只能是38,如果我们提交了超过38个数值以后就会出现错误,从而让数据库出现错误...
防范也很简单,一句代码足够
程序代码:
if id>1000000000 then call error(id) '100000000这样的长度总足够了吧?

()

相关文章:
© 2006   www.java-asp.net