你的位置:首页 > 软件开发 > 数据库 > 数据库防火墙如何防范SQL注入行为

数据库防火墙如何防范SQL注入行为

发布时间:2015-10-18 22:19:28
SQL注入是当前针对数据库安全进行外部攻击的一种常见手段。现有主流应用大多基于B/S架构开发,SQL注入的攻击方式正是利用web层和通讯层的缺陷对数据库进行外部恶意攻击。将SQL命令巧妙的插入通讯的交互过程中,如:Web表单的递交、域名输入、页面请求等。通过硬性植入的查询语句攻击 ...

SQL注入是当前针对数据库安全进行外部攻击的一种常见手段。现有主流应用大多基于B/S架构开发,SQL注入的攻击方式正是利用web层和通讯层的缺陷对数据库进行外部恶意攻击。将SQL命令巧妙的插入通讯的交互过程中,如:Web表单的递交、域名输入、页面请求等。通过硬性植入的查询语句攻击数据库,以期利用服务器自身缺陷执行恶意的SQL命令,从而入侵数据库。因此通过SQL注入攻击方式产生的安全事件也在增多,对系统的危害性极大。

通过SQL注入可以远程获取并利用应用里的数据,并且获取未经hashed加密的用户秘钥以及信用卡信息,甚至有以管理员身份登陆进这些应用的可能。下面通过一组常见的SQL注入攻击方式,进行说明:

首先,我们假设数据库中有JOB表,模拟进行攻击,查询表中数据量。

然后,应用中调用恶意的攻击性url向JOB表植入SQL语句:

http://www.moxcn.com:port/webapp/Default.aspx?jobid=1’or 1=(selectcount(*) from job)—

那么,攻击时等效的SQL语句如下:

SELECT job_id, job_desc, min_lvl, max_lvl

FROMjobs

WHERE job_id=’1’or 1=(select count(*) from jobs) –‘

如果SQL注入的假设错误,web页面如图一:

数据库防火墙如何防范SQL注入行为

图一

如果SQL注入的假设成功,web界面如图二:

数据库防火墙如何防范SQL注入行为

图二

攻击说明:如果SQL注入的假设成功,即证明了数据库中该表的表名是jobs,从而我们也就可以对该表进行增删改操作,从而对数据库安全造成极其严重的危害。

SQL注入的8种攻击行为

安全界有句名言“未知攻,焉知防”,想要预防SQL注入,需要进一步剖析SQL注入都有哪些常见攻击方式。

  1. 猜测数据库名,备份数据库
  2. 猜解字段名称
  3. 遍历系统的目录结构,分析结构并发现WEB虚拟目录,植入木马
  4. 查询当前用户的数据库权限
  5. 设置新的数据库帐户提权得到数据库管理员账户权限
  6. 利用存储过程获取操作系统管理员账户
  7. 客户端脚本攻击:通过正常的输入提交方式将恶意脚本提交到数据库中,当其他用户浏览此内容时就会受到恶意脚本的攻击。
  8. 客户端脚本攻击:通过SQL注入方式将恶意脚本提交到数据库中,直接使用SQL语法UPDATE数据库,并将注入SQL经过“HEX编码”,然后通过exec执行“动态”SQL的特性运行脚本。

综上可知,SQL注入对数据库的攻击方式日趋繁多,危害也日益严重,因此如何做好SQL注入的防护工作也就变成考量数据库安全产品的一道标杆。

SQL注入的5种防护方式

常规的SQL注入防护方式,包括以下几个方面

  1. 通过正则表达校验用户输入
  2. 通过参数化存储过程进行数据查询存取
  3. 参数化SQL语句
  4. 为数据库添加新架构
  5. 利用LINQ to SQL查询

针对以上SQL 5种注入防护方式,可以在一定程度上避免SQL注入对数据库所带来的入侵危害,但这些操作同步会使数据库操作复杂化,在一定程度上提高了企业运维成本,同时降低数据库操作性能。因此,一种专门针对数据库防护类产品——数据库防火墙诞生,可以针对SQL注入攻击行为进行主动有效的防护。

数据库防火墙如何防御SQL注入


原标题:数据库防火墙如何防范SQL注入行为

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。