English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 威盾新闻 >> 如何有效的防御SQL注入攻击?

 

如何有效的防御SQL注入攻击?

威盾防火墙 2015-01-21

 
怎样防御SQL注入攻击?
你遭受过脚本攻击的侵害么?
企业的服务器是否经常受到攻击?
当Web业务受到安全威胁时,我们应该怎样防御?


可能很多网友都会提出上面的问题,如今网络攻击的发展趋势是逐渐转向高层应用。根据Gartner的分析,目前对网络的攻击有70%以上是集中在应用层,并且这一数字呈上升趋势。应用层的攻击有可能会造成非常严重的后果,比如用户帐号丢失和公司机密泄漏等。因此,对具体应用的有效保护就显得越发重要。

作为排在 Web 威胁前列的SQL 注入攻击,在传统的安全产业界的主要识别和防御方法有基于特征的关键字匹配技术和基于异常检测技术。

SQL注入攻击的检测方法

基于特征的关键字匹配技术是目前业界使用的主流方法,基本原理是抽取SQL注入过程中都会出现的特殊字符(例如:’ – #等)和关键字(例如:’SELECT、UNION等)作为检测SQL注入的依据。例如Snort中,以如下方式定义一个SQL 注入:
引用:
alert tcp $EXTERNAL_NET any ->  $HTTP_SERVERS  
$HTTP_PORTS  ( msg:"SQL Injection Paranoid";  flow:to_server,established;
               uricontent:".pl";pcre:"/(\%27)|(\’)|(\-\-)|(%23)|(#)/i"; 
classtype:Web-application-attack; sid:9099; rev:5;)
由于该方法是检测特定的字符和该字符的某一种编码方式,因此黑客可以利用其它的编码方式或者不同的关键字来进行攻击,系统将会形成漏报。在另一方面,由于这种机械地检测特定字符,也很容易形成误报。

与基于特征的关键字匹配技术对应的是基于异常检测技术。该技术主要分为学习期和检测期。在学习期,需要干净的网络数据,检测系统为Web应用程序自动建立各参数的正常使用模型(URL/COOKIE),待学习充分后,才能进入检测期。在检测期,系统利用学习期形成的模型对网络数据进行分析。

基于异常检测技术能够发现一些异常,但其缺陷也显而易见:需要一定的学习期才能投入使用,而且一段业务模型发生变化,就需要重新学习。更为重要的是异常未必就是攻击。

学术界研究方向

在学术界,针对SQL注入,同样有两个重要的研究方向基于正常行为模型的AMNESIA和基于数字签名技术的SQLRand 方法。

AMNESIA的核心思想为静态分析、动态监控。静态分析是找到源码中所有动态SQL语句的构造点,并为这些动态SQL语句建立自动机模型,同时在原系统中插入监测代码,动态监控是控提交的SQL语句是否满足自动机模型,如果满足则是正常的操作,否则,就认为发生了SQL注入攻击。其原理如图所示:



该方法的主要弱点是需要能够获得应用程序的源代码,并且需要修改源代码。

基于数字签名技术的SQLRand方法是开始时,对源代码中包含动态SQL语句的模版中的关键字进行随机化编码处理,这些编码规则黑客无法预知。在运行时,对随机化编码之后的SQL命令进行解码,如果解码失败则表示遭受到了SQL注入攻击。例如:
引用:
动态SQL命令模版:
select * from users where name = %name
编码后动态SQL命令:
select123 * from123 users 
where123 name = ‘Mike’  OR 1=1

该方法的主要弱点是需要拥有源代码和修改源码,同时需要改变原有业务系统的部署,方案复杂。
引用:
有效的解决思路:攻击特征虽然千变万化,但攻击造成某种现象相对一致

VXID专利检测算法有效抵御各种Web攻击


VXID算法避免了传统产业界基于单纯模式匹配方法的大量漏报:攻击者的编码转换和关键字跨域都将无法躲避检测;也不会由于用户输入中包含关键字而产生误报。

相关内容: 最新内容:
专题:SQL注入攻击与防御[2015-01-21]
SQL注入之SQLmap入门[2015-01-20]
Web十大安全隐患之SQL注入[2015-01-20]
自定义sqlmap注入语句进行高级注入[2015-01-20]
最全防止sql注入方法[2015-01-20]
SQL注入攻击[2015-01-20]
专题:SQL注入攻击与防御[2015-01-21]
SQL注入之SQLmap入门[2015-01-20]
Web十大安全隐患之SQL注入[2015-01-20]
自定义sqlmap注入语句进行高级注入[2015-01-20]
最全防止sql注入方法[2015-01-20]
SQL注入攻击[2015-01-20]