始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

如何应对WEB攻击的防护盲点(2)

发布时间:  2012/9/15 19:34:35

静态防护SQL注入

SQL注入的防护一直是焦点话题,从编程角度看最有效的防护是对用户输入的变量通过参数来传递,而不是直接嵌入到SQL语句,但缺陷:

1.不是所有的数据库和编程语言都有相应的参数化功能;

2.编写时面对众多的输入模块,难免会有疏漏;

3.难以批量化和统一部署。

还有一些方法就是把参数进行分类,比如用户递交的参数值统一转换成纯数字或纯字符串类型、加密用户输入、限制输入长度等,但和以上方法的缺陷一样。

比如这段代码是直接把用户输入放置数据库的SQL语句中进行执行,如果不对member_login变量进行过滤和判断是可以注入攻击的:

---漏洞代码段---

member_login=trim(request("login"))

set rs=server.createobject("ADODB.Recordset")

sql="select * from job_Member where Member_login='"&member_login&"'"

rs.open sql,conn,1,3

如果一一检查和修复需要花费大量的精力,而很多网站上线运营之后需要提高安全性的普遍举措是采用一些编写好的通用性的函数,原理是对输入进行判断和过滤,它在一定程度上能缓解攻击行为,并且花费成本相对不大,我们先看一段编写的防护函数:

---防护代码段---

<% '定义需要过滤的输入字符 dim sql_injdata SQL_injdata = "'|and|exec|insert|select|delete |update|count|*|%|chr|mid|master|truncate|char |declare|1=1|1=2|;" SQL_inj = split(SQL_Injdata,"|" '处理POST提交的输入 If Request.QueryString<>"" Then For Each SQL_Get In Request.QueryString For SQL_Data=0 To Ubound(SQL_inj) if instr(Request.QueryString(SQL_Get), Sql_Inj(Sql_DATA))>0 Then Response.Write "" Response.end end if next Next End If '处理GET提交的输入 If Request.Form<>"" Then For Each Sql_Post In Request.Form For SQL_Data=0 To Ubound(SQL_inj) if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then Response.Write "" Response.end end if next next end if %>

以上代码首先需要定义相对完整的过滤字符集,然后分别处理用GET和POST方式提交的数据报文,在需要防护的页面里调用包括它既可[an error occurred while processing this directive]

但是编写统一的防止注入函数有缺陷:

1.需要考虑不同语言的不同语法,不能统一,比如ASP、PHP、Java;

2.要充分考虑每一个可能用户输入的地方,但往往会有疏漏;

3.虚拟机往往有大量站点,而管理者是单个站点的属主,系统管理员没权利也没能力统一定制防护措施;

4.如果是IDC或者大型企业的机房,会有更大量不同类型的WEB应用服务器,要实现批量防护则更困难;

5.消耗服务器运算资源和网络带宽,因为大批量的网络连接和提交数据都需要经过函数来处理;

6.过滤不严谨则容易被攻击者绕过。

最后一点其实很关键,不仅仅是过滤不严谨,而且攻击者对于输入可变化大小写,拼接攻击语句,甚至构造字符的不同编码方式,比如字符 < 可被编码为 <、<、&#x3c 或 %3c,而编码方式又是如此之多,Unicode、十六进制、ASIIC、UTF-8等,所以用防护函数方式是非常困难的。

通过上面描述,我们知道了从编程方式来防御攻击具有它的局限性,简单概括:会有疏漏、消耗性能、难以统一、运算复杂等。

而这时WAF的优点就体现出来了,绿盟科技WAF内置了50多条精心配制的规则,用于防护SQL注入,有人可能会疑问这么少的规则能有效防御吗?要知道虽然SQL注入的语句千变万化,但规则只需要找出共同点进行匹配即可,并且可在此基础上自定义规则。规则制定后可用于WAF后需要保护的不同类型的多台WEB服务器,类型一致的可使用同一规则,对于大型WEB群来说这具有无可比拟的优越性。它的优点如下:

1.统一定制的规则能批量适用于不同类型的网站;

2.花费时间和精力最少,无论是应用或编辑规则都方便,不用每台WEB服务器去部署;

3.即使网站存在漏洞,也能在前端把攻击流量给予清洗和阻断;

4.网站无需处理错误的探测,避免把错误处理方式和信息暴露给攻击者,同时也节省了服务器的处理资源。
如果有需要服务器的租用与托管的敬请联系QQ:1501281758(亿恩星辰)   联系电话:0371—63322220


本文出自:亿恩科技【www.enkj.com】

以上代码首先需要定义相对完整的过滤字符集,然后分别处理用GET和POST方式提交的数据报文,在需要防护的页面里调用包括它既可[an error occurred while processing this directive]

但是编写统一的防止注入函数有缺陷:

1.需要考虑不同语言的不同语法,不能统一,比如ASP、PHP、Java;

2.要充分考虑每一个可能用户输入的地方,但往往会有疏漏;

3.虚拟机往往有大量站点,而管理者是单个站点的属主,系统管理员没权利也没能力统一定制防护措施;

4.如果是IDC或者大型企业的机房,会有更大量不同类型的WEB应用服务器,要实现批量防护则更困难;

5.消耗服务器运算资源和网络带宽,因为大批量的网络连接和提交数据都需要经过函数来处理;

6.过滤不严谨则容易被攻击者绕过。

最后一点其实很关键,不仅仅是过滤不严谨,而且攻击者对于输入可变化大小写,拼接攻击语句,甚至构造字符的不同编码方式,比如字符 < 可被编码为 <、<、&#x3c 或 %3c,而编码方式又是如此之多,Unicode、十六进制、ASIIC、UTF-8等,所以用防护函数方式是非常困难的。

通过上面描述,我们知道了从编程方式来防御攻击具有它的局限性,简单概括:会有疏漏、消耗性能、难以统一、运算复杂等。

而这时WAF的优点就体现出来了,绿盟科技WAF内置了50多条精心配制的规则,用于防护SQL注入,有人可能会疑问这么少的规则能有效防御吗?要知道虽然SQL注入的语句千变万化,但规则只需要找出共同点进行匹配即可,并且可在此基础上自定义规则。规则制定后可用于WAF后需要保护的不同类型的多台WEB服务器,类型一致的可使用同一规则,对于大型WEB群来说这具有无可比拟的优越性。它的优点如下:

1.统一定制的规则能批量适用于不同类型的网站;

2.花费时间和精力最少,无论是应用或编辑规则都方便,不用每台WEB服务器去部署;

3.即使网站存在漏洞,也能在前端把攻击流量给予清洗和阻断;

4.网站无需处理错误的探测,避免把错误处理方式和信息暴露给攻击者,同时也节省了服务器的处理资源。
如果有需要服务器的租用与托管的敬请联系QQ:1501281758(亿恩星辰)   联系电话:0371—63322220


本文出自:亿恩科技【www.enidc.com】
-->

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线