防止SQL注入攻击:网络管理员的前景展望

日期: 2009-11-09 作者:Michael Cobb翻译:唐波 来源:TechTarget中国 英文

针对Web应用的攻击——SQL注入为人所熟知,安全专家对被越来越多的黑客所利用的这一方式长期以来都非常警惕。SQL注入是一种人为向Web表单的输入框中加入恶意的结构化查询语言(SQL)代码以试图获取资源的访问权限或是改变数据的安全攻击。它需要的唯一条件是网络端口80处于开放状态。即使有设置妥当的防火墙,这一端口也是少数的几个允许流量的通道之一。

最近发生的SQL注入案例是Heartland Payment Systems公司的服务器攻击事件,它让网络管理人员意识到SQL注入威胁的严重程度并且开始重新审视他们对这一攻击的防范措施。   防御SQL注入攻击的主要方法是使用参数化的存储程序。当这些程序……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

针对Web应用的攻击——SQL注入为人所熟知,安全专家对被越来越多的黑客所利用的这一方式长期以来都非常警惕。SQL注入是一种人为向Web表单的输入框中加入恶意的结构化查询语言(SQL)代码以试图获取资源的访问权限或是改变数据的安全攻击。它需要的唯一条件是网络端口80处于开放状态。即使有设置妥当的防火墙,这一端口也是少数的几个允许流量的通道之一。最近发生的SQL注入案例是Heartland Payment Systems公司的服务器攻击事件,它让网络管理人员意识到SQL注入威胁的严重程度并且开始重新审视他们对这一攻击的防范措施。

  防御SQL注入攻击的主要方法是使用参数化的存储程序。当这些程序被使用时,将以参数和用户定义的子程序的形式对数据库发出请求,这就代替了需要用户直接提供数值的命令方式。SQL参数的优势不光体现在输入的安全性上,而且他们还能够很大程度地减少SQL注入攻击发生的成功几率。

  数据库的开发不在网络管理员的职责范围之内,但是你应当坚信只有保障了网络上的数据安全才能保证遵循了最佳实践。


  虽然使用存储程序是必须的,但光这样做还是不够的。为了防御潜在的攻击者,深度防御战略是必不可少的。否则开发者将会被要求提供前线安全(front-line security),而从以往经验看来这对许多的组织来说都是种挑战。数据库管理员和应用程序开发者应当遵从最佳实践是毫无疑问的,但还是让我们来看看你作为一个网络管理员,为数据库资源提供附加保护所能做的事情。

  应用程序和数据库服务器很显然需要加固,并需要定期打补丁,但是由于SQL注入攻击的对象是具体的Web应用程序——ASP, JSP, PHP等,而不是Web服务器和SQL注入攻击运行的操作系统,因而SQL注入攻击不能因系统的补丁升级而得到解决。静态的和网络中传送的敏感信息都需要加密,但作出最大贡献的可能要数附加的Web应用防火墙或作为附加防御的一些应用层防火墙的变种。

  Web应用防火墙的防护范围超越了传统网络防火墙和入侵检测/入侵防御系统。许多Web应用防火墙,比如由Imperva公司和Barracuda Networks公司开发的产品,能够帮助防御SQL注入攻击、跨站脚本攻击和其他的一些针对应用程序逻辑漏洞或软件技术漏洞的攻击。最新的Web应用防火墙能够识别由攻击者使用SQL注入开发的逃逸技术(evasion techniques)。例如,有一种是通过对注入的命令进行部分编码来达到搅乱攻击的目的的。

  你所选择的应用层防火墙应当同时允许创建过滤器来进行拦截、分析或者修改仅限于流向该网络的流量。大量的请求通常不需要分析,过滤器通常不应当去除在SQL注入攻击中经常使用的字符串,例如——and @@version。所有的这些请求都能够记录到日志并且其原IP地址也可封闭。更出色的防火墙能够“学习”对你的特定网络来说哪些是正常流量,哪些是异常流量,并且采取各自相应的处理方式。当检测到异常状况时,Web应用防火墙能够关闭正在发生的潜在攻击进程。而且,由于SQL注入通常通过URL查询字符串来发动攻击,对Web服务器的日志文件进行定期检查可以发现可能带来注入攻击的异常查询操作。

  作为网络管理员,有一点很重要,那就是保证Web应用程序使用的任何账户的权限必须被设置为最低级别。严格的访问限制将会降低成功的攻击所造成的损失。绝对不要在用户使用带有管理权限的用户名,例如在服务器层使用“sysadmin”,或者在数据库层使用“db_owner” 时,连接Web应用程序。例如,微软建议在安装SQL Server时,为服务分配一个域账户,以限制用户只能访问必要资源。这样以来,即使攻击者攻破了某组织的防线,他还会被访问SQL服务器的控制集限制住。

  由于SQL注入攻击利用的是写得不够完美的代码,完全阻止SQL注入攻击的唯一方式是解决你的应用程序代码的漏洞问题。然而,作为网络管理员,你还可以添加附加的防御层,从而使潜在的攻击者更难攻克。

相关推荐