分类
平台层注入。由不安全的数据库配置或数据库平台的漏洞所致
代码层注入。主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。
SQL注入的产生原因
①不当的类型处理
②不安全的数据库配置
③不合理的查询集处理
④不当的错误处理
⑤转义字符处理不合适
⑥多个提交处理不当。
攻击
,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。
影响
1、数据表中的数据外泄,例如个人机密数据,账户数据,密码等。
2、数据结构被黑客探知,得以做进一步攻击(例如SELECT* FROM sys.tables)。
3、数据库服务器被攻击,系统管理员账户被窜改(例如ALTERLOGIN sa WITH PASSWORD='xxxxxx')。
4、取得系统较高权限后,有可能得以在网页加入恶意链接以及XSS。
5、经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell"net stop iisadmin"可停止服务器的IIS服务)。
6、破坏硬盘数据,瘫痪全系统(例如xp_cmdshell"FORMAT C:")。
防护
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和
双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFTSCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。
参考
一次完整的安全渗透测试http://blog.csdn.net/kezhen/article/details/9749705
http://blog.csdn.net/u010168160/article/details/17337887
http://blog.csdn.net/imfenghui/article/details/22748067 十大
http://blog.csdn.net/u011649536/article/details/46743909#comments