当前位置: 首页 > 图文教程 > 服务器 > 安全防护 > 判断Web数据库方式的一个小经验

安全防护
注意防范搜索引擎网站的漏洞 避免遭受恶意攻击
IRC变种病毒在MSN上大行其道 可被黑客操纵
“关机能手”自动关闭电脑发起ARP攻击
打造SQL Server2000的安全策略
通过IE才能诱发 Firefox2.0发现重大漏洞
安全知识 当今最流行网络攻击六大趋势
安全防护:07月14日-16日病毒木马预警
用瑞星密码保护功能保护QQ密码
IE和Firefox混着用易遭黑客攻击
"卤猪"病毒毁你没商量 可让用户系统崩溃
自己动手删除各种病毒遗留文件
7月18日:瑞星播报--“灰鸽子变种HO”病毒
木马播报 警惕网上被“钓鱼”
危险病毒卤猪活动频繁 Linux等系统不受影响
即时通讯危险揭秘 网上聊天五大安全危机应对
揭密局域网计算机病毒独有的七大特点
利用DDOS攻击 网络安全公司大赚其钱
谨防小不点变种伪装成微软版本诱惑用户
通过移动存储设备传播的木马呈现上升趋势
jsp防盗链

安全防护 中的 判断Web数据库方式的一个小经验


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-29   浏览: 35 ::
收藏到网摘: n/a

很多站都是这样防止或是过滤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这样的长度总足够了吧?