灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2293回复:0

ASP的SQL防注入新方法,不用监测注入字符

楼主#
更多 发布于:2013-01-24 13:47
原理很简单,数据库字符类型就只有几种。我们常用的就是数值,和字符串,还有时间。
我们一般用到查询的为数值,和字符串。
字符串查询格式为 where 字段='查询条件' 这里无法注入,因为这里加了单引号,查询条件转化为字符串类型,而不是有效的SQL语句。
而注入漏洞就存在于不加单引号的查询条件中,就是数值查询条件。这里查询格式为 where 字段=查询条件 没了单引号,就出现了注入漏洞。接下来我们就要解决这个漏洞了。
传统的方法是屏蔽注入字符,但是带来了很多不便。
现在我教大家两个新方法。
1,加单引号:查询格式变为 where cstr(字段)='查询条件' 这里将数据库里要查询的内容转换为字符串,所以后面要加上单引号,这里防止了注入。
2,先检测查询条件的类型:用isnumeric()函数,检测是否为数值,如果是再执行,数据库操作。这里就杜绝了所有字符串,更别说注入字符了。
讲完了,希望对大家有所帮助。
续:数据库查询中数值查询中 where 字段=查询条件,这里不能加单引号,除非这样 where cstr(字段)='查询条件'
法1大家谈论下吧,我觉得好象有点问题。发2我认为可行。
法1我临时想到的。发2我摸索了一段时间突然发现的,而且我正在用,非常好。​

喜欢0 评分0
游客

返回顶部