晨风资讯网
新闻资讯网络冲浪网页设计网络编程图形图像数据库网络媒体服务器网络安全网站运营软件教程黑客认证Wap技术
教程搜索
教程搜索:
  首页 > 网络安全 > 安全防范 > 正文  

判断Web数据库方式的一个小经验
日期:2006-1-21 9:47:21 来源:网络 作者:无名 浏览:

很多站都是这样防止或是过滤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...{"0"x38}
这样就能得让上面那段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这样的长度总足够了吧?

上一篇: 网络安全讲座之七:攻击与渗透(8) 下一篇:

密码与Crack工具研究(1)

返回列表 打印此页 加入收藏 资讯论坛 关闭窗口 点击复制本页地址,发送给QQ/MSN好友
关于我们 - 联系我们 - 版权声明 - 帮助(?) - 广告服务 - 友情链接 - 服务项目 - 人才招聘
2003-2008 版权所有 © 晨风资讯网 未经授权禁止复制或建立镜像
CopyRight 2003-2008 www.Net118.com,All Rights Reserved.Design By ChenFeng Network Studio