Sql注入释义及基础防范措施
什么是SQL注入?
通过把SQL命令插入到Web表单中提交,或者输入域名或者页面请求的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令。
SQL注入一般会出现在什么地方?
1、含有输入数据表单的页面(登录界面、查询界面、反馈界面等),即使是hidden的表单也有可能存在这个问题。
2、含有用户信息、ID等的URL(类似于[http://XXX/index.asp?ID=155](http://xxx/index.asp?ID=155))
,可以操作ID后的参数数据。
SQL注入的防范措施
1、从开发者的角度来说,防范措施如下:
**(1) 转义敏感字符及字符串: **
SQL的敏感字符包括: ·“exec”, “xp_”, “sp_”, “declare”, “cmd”, “Union”, “+”, “//”, ”..”, “;”, “’”, “–”, “%”, “0x”, “><=!-*/()|” ,和空格
(2) 屏蔽出错信息:阻止攻击者知道攻击的结果
(3) 在服务端正式处理之前提交数据的合法性(合法性检查主要包括三 项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客 户端的输入合法之前,服务端拒绝进行关键性的处理操作.
**2、从测试人员的角度来说,防范措施是: ***
在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:需求中应说明表单中某一field的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符);需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示等。
通过正则表达校验用户输入:
首先我们可以通过正则表达式校验用户输入数据中是包含:对单引号和双"-"进行转换等字符。
然后继续校验输入数据中是否包含SQL语句的保留字,如:WHERE,EXEC,DROP
等。