SQL注入攻击浅析

时间:2022-09-07 10:45:23

摘要:当今社会,计算机网络已经渗透到社会生活的各个领域,成为人们日常生活的一部分。然而一些为了追逐金钱利益的不法份子的活动也日益猖獗,他们通过各种各样的非法手段利用网络获取需要的信息。本文就SQL注入攻击的原理、漏洞、危害、SQL攻击语句的构成及攻击预防进行了简单的分析。

关键词:SQL;数据库;攻击;黑客

中图分类号:TP393 文献标识码:A 文章编号:1007-9599 (2012) 16-0000-02

SQL注入攻击(SQL injection)是目前主流的数据库攻击方法之一,它的含义就是利用数据库的外部接口把用户虚构的数据插入到当前数据库中,从而入侵数据库、网站及系统。

1 SQL注入攻击原理

SQL注入攻击是通过构造巧妙的SQL语句,同网页提交的内容结合起来进行注入攻击。常用的手段有使用注释符号和恒等式(如1=1)、使用union语句进行联合查询、使用insert或update语句插入或修改数据库数据表内容等,此外还可以利用一些内置函数辅助进行攻击。

通过SQL注入漏洞攻击网站的步骤如下图1所示:

2 SQL注入漏洞

SQL注入漏洞是由于Web应用程序没有对用户输入数据的合法性进行判断,攻击者通过Web页面的输入区域(如URL、表单等),用精心构造的SQL语句插入特殊字符和指令,通过和数据库交互获得私密信息或者篡改数据库信息。SQL注入攻击在Web攻击中非常流行,攻击者可以利用SQL注入漏洞获得管理员权限,在网页上加挂木马和各种恶意程序,盗取企业和用户敏感信息。

3 SQL注入攻击危害

SQL注入攻击是危害Web安全的主要攻击手段,存在SQL注入攻击的网站一旦被攻击成功后,产生的后果将可能是毁灭性及不可恢复的,例如:

1)非法越权操作数据库内容;2)随意篡改网页内容;3)添加系统帐户或者数据库帐户;4)安装木马程序;5)本地溢出并获得服务器最高权限。

4 SQL注入语句构造方法剖析

4.1 判断是否存在注入漏洞

判断是否存在注入漏洞,最简便的方法是可以通过在一个查询语句的后面加上条件“and true”和“and false”,如果加上条件“and true”之后页面访问返回正常而加“and false”之后页面返回不正常,那么就可以判断此页面存在注入漏洞。

4.2 猜表、猜字段

(1)猜表。在存在注入漏洞的页面访问中加上“and exists (select count(*)from猜测的表名”,如果返回正常,说明你猜的表存在,否则所猜的表不存在,可以重新构造。

(2)猜字段名.在存在注入漏洞的页面访问中加上“and(select count(所猜字段名)from表名)>0”,如果返回正常,说明你猜的字段存在,否则说明猜测错误,可以重新构造。

5 防御注入攻击方法

5.1 数据库管理员角度

(1)数据库管理员从数据库服务器上移除所有数据库的示例脚本,以便减少冗余脚本数据量。

(2)移除不需要用到的存储过程,尤其是访问注册表的存储过程。

(3)为每一个网站单独分配一个专门的操作账户,尽可能减少使用sa等默认账户登录数据库及系统。

(4)密码安全问题。

5.2 应用程序设计员角度

大部分Web应用常见漏洞,均是由于在Web应用开发中,开发者没有对用户输入的参数进行检测或检测不严格造成的。所以,Web应用开发者应该树立强烈的安全意识,在开发中编写安全代码;对用户提交的URL、查询关键字、HTTP头、POSE数据等进行严格的检测和限制,只接受一定长度范围内、采用适当格式及编码的字符,阻塞、过滤或者忽略其他的任何字符。

(1)对异常处理错误页面跳转到指定页面,杜绝将异常处理信息过多的暴露给用户。

(2)对于动态构造SQL查询的场合,强烈建议使用以下的技术减少注入漏洞:

第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。

第二:删除用户输入内容中的所有连字符,防止攻击者构造出类似“select*from tbuser where userName='admin1'–and passWord=''”之类的查询,因为这类查询的后半部分已经被注释掉,不再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限。

第三:对于用来执行查询的数据库帐户,限制其权限。用不同的帐户执行查询、插入、更新、删除操作。由于隔离了不同帐户可执行的操作,因而也就防止了原本用于执行SELECT命令的地方却被用于执行INSERT、UPDATE或DELETE命令。

(3)限制表单或查询字符串输入的长度。如果用户的登录名字最多只有10个字符,那么不要认可表单中输入的10个以上的字符,这将大大增加攻击者在SQL命令中插入有害代码的难度。

(4)将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。

5.3 系统管理员角度

作为负责网站日常维护管理工作的Web管理员,必须及时跟踪并安装最新的、支撑Web网站运行的各种软件的安全补丁,确保攻击者无法通过软件漏洞对网站进行攻击。

除了软件本身的漏洞外,Web服务器、数据库等不正确的配置也可能导致Web应用安全问题。Web网站管理员应该对网站各种软件配置进行仔细检测,降低安全问题出现的概率。

此外,Web管理员还应该定期审查Web服务器日志,检测是否存在异常访问,及早发现潜在的安全问题。

在现实中,即使有了前面三种事前预防,Web应用系统的漏洞还是不可避免地存在,部分Web网站已经存在大量的安全漏洞,而Web开发者和网站管理员并没有意识到或发现这些安全漏洞。由于Web应用采用HTTP,普通的防火墙设备无法对Web类攻击进行防御,因此可以(建议)使用IPS入侵防御设备来实现安全防护

参考文献:

[1]郑斌.黑客攻防入门与进阶[M].北京:清华大学出版社,2010.

[2]吴长坤.黑客攻防入门与实战[M].北京:企业管理出版社,2010.

[3]叶刚,陈文萍,黑客攻防实战入门与提高[M].北京:科学出版社,2011.

上一篇:通信工程档案资料有效整理措施研究 下一篇:浅析计算机网络安全防护措施