频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

来自微软专家的SQL注入防范方法

作者: 独自等待 出处:IT专家网 2008-06-06 10:58    砖    好    评论   进入论坛
阅读提示:SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。微软将为用户全面解析SQL注入及防范。

自去年下半年开始,很多网站被恶意代码说困扰,攻击者在动态网页的SQL数据库中注入恶意的HTML < SCRIPT>标签。这种脚本攻击行为在2008年第一季度开始加速传播,并继续影响有漏洞的Web应用。

这些Web应用存在以下几点共性:

使用ASP作为编程代码;

使用SQL Server数据库;

应用程序代码根据URI请求字符串生成动态SQL查询(http://consoto.com/widgets.asp?widget=sprocket)。

这代表了一种新的SQL注入(SQL injection)途径(http://msdn.microsoft.com/en-us/library/ms161953.aspx)。在过去,SQL注入攻击的目标通常是具有安全漏洞或特殊数据库结构的Web应用。如今这种攻击的不同在于,攻击能够利用任何URI请求字符串来创建动态SQL查询,进而攻击任何存在的漏洞。在http://blogs.technet.com/neilcar/archive/2008/03/15/anatomy-of-a-sql-injection-incident-part-2-meat.aspx可以找到更多技术详情和代码。

这种攻击并非利用了Window、IIS、SQL Server或者其他底层代码漏洞,相反地它利用了在这些基础平台上运行的WEB应用漏洞。Microsoft已经对这些攻击进行了彻底的调查,并发现这些攻击和以往微软产品的补丁和0-day漏洞无关。更多信息访问http://blogs.technet.com/msrc/archive/2008/04/25/questions-about-web-server-attacks.aspx

正如上面所指出的,SQL注入攻击在近年来呈现一种增长的趋势。至少两点重要因素促使其增长:

一方面,自动化的恶意攻击工具。SANS在http://isc.sans.org/diary.html?storyid=4294讨论了这类工具。恶意攻击工具使用搜索引擎来寻找存在漏洞站点并进行SQL注入。

另一方面,网络中存在的僵尸计算机正在进行SQL注入攻击,并以此来广泛传播僵尸主机。SecureWorks上对此案例进行了分析。http://www.secureworks.com/research/threats/danmecasprox/

一旦某台服务器被该漏洞所攻击,它将被插入 < SCRIPT>标签来指向某个恶意的JS文件。虽然这些文件的内容不同,但都尝试利用已经被修复的Micfosoft漏洞以及第三方ActiveX控件漏洞,对用户计算机发动攻击。由于这些脚本相对独立存在,这些脚本可以被快速修改,从而利用新的客户端漏洞。

IT/数据库管理员建议

有很多措施是IT管理员或者数据库管理员应该在其管理的基础坏境中必须采取的,通过这些措施可以帮助管理员以减少风险并对可能出现的威胁进行及时响应。

* 检查IIS日志和数据表

由于攻击程序是通过URI请求字符串来触发,管理员们可以检查IIS日志中的异常请求。具体实施参考微软technet中相关文章 http://blogs.technet.com/neilcar/archive/2008/03/15/anatomy-of-a-sql-injection-incident-part-2-meat.asp。在codeplex 网站上有自动化攻击工具的实例演示。http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=WSUS&ReleaseId=13436

如果IIS日志表明服务器可能已经被利用,那么下一步要检查相应的Web应用所使用的数据库中的表格,并找出附加在文本内容中的 < SCRIPT>标签。

提示:IIS服务器绝不应当在工作环境中关闭日志功能。存储并管理IIS产生的日志是十分必要的,缺少IIS日志对于响应安全事件将造成巨大的危害。

* 如果在后端数据库运行了第三方代码,用户有必要考虑独立软件开发商(ISV,Independent Software Vendors)所可能造成的SQL注入影响。

在使用第三方ASP Web程序的情况下,管理员应当联系第三方应用程序提供商,来确定他们的产品不受SQL注入攻击的影响。

* 确保使用数据库的Web应用程序最少访问权限。

管理员确保需要使用Web应用的SQL用户具有最小权限是十分必要的。Web应用程序不应当给予以诸如”sysadmin”的服务器管理员权限或者”db_owner”的数据库权限。SQL安全配置白皮书《best practices for setting up and maintaining security in SQL Server 2005》提供了关于SQL Server安全的多方面建议。: http://download.microsoft.com/download/8/5/e/85eea4fa-b3bb-4426-97d0-7f7151b2011c/SQL2005SecBestPract.doc 提供了关于SQL Server安全的多方面建议。

Web开发者建议

这里有一些论述在编码时如何防御SQL注入的优秀文档。由于攻击行为通常影响有漏洞的Web应用程序代码,所以完全防御他们的唯一方法是避免在代码中存在的漏洞。开发代码中任何需要使用外部资源(一般指从URI请求字符串)数据来动态生成SQL请求的地方都应当被重点关注。一旦代码漏洞被缺人,开发者需要谨慎去解决它。

* 解释-SQL注入、ASP.NET和ADO.NET :

http://msdn.microsoft.com/en-us/library/bb671351.aspx

上面的文档同时包含如下相关主题《How To: Protect From SQL Injection in ASP.NET》 http://msdn.microsoft.com/en-us/library/ms998271.aspx(同样适用于ASP)。

这里有一个非常有用的视频(链接可能无效):http://channel9.msdn.com/wiki/default.aspx/SecurityWiki.SQLInjectionLab

* 实施SQL注入相关信息:

http://msdn.microsoft.com/en-us/library/ms161953.aspx

* ASP代码中的SQL注入(不同与ASP.NET):

http://msdn.microsoft.com/en-us/library/cc676512.aspx

如何在ASP中执行SQL Server存储: http://support.microsoft.com/kb/q164485

* Microsoft SDL(The Microsoft Security Development Lifecycle)给出了防御SQL注入指南。指南中提供了三种策略来根除SQL注入攻击:

1. 使用SQL参数查询

2. 使用存储策略

3. 使用SQL单一执行许可

Michael Howard在BLOG中谈论如何执行这些安全策略。

http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx

同时,《Writing Secure Code(第二版)》指导了如何防御此类攻击(详见399-411页)。

* 减轻SQL注入:使用参数查询。使用参数化查询的好处是它将执行代码(例如SELECT语句)和数据(由程序使用者提交的动态信息)分开。这种方法可以防对由用户执行而产生的恶意代码。

Part 1:

http://blogs.technet.com/neilcar/archive/2008/05/21/sql-injection-mitigation-using-parameterized-queries.aspx

Part 2:

http://blogs.technet.com/neilcar/archive/2008/05/23/sql-injection-mitigation-using-parameterized-queries-part-2-types-and-recordsets.aspx

在ASP代码中过滤SQL注入(或者黑名单关键字),我们认为可作为临时的替代方法,因为在现实中并不修复错误的根源。(例如,代码仍然是有漏洞的,仍有可能绕过过滤机制)

来自IIS团队的Nazim解释了如何过滤的细节信息:http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx

如果你仍然不清楚该如何下手,所有使用特定ASP代码访问数据库,尤其是使用由用户提交的数据代码应首先被检测。

最终用户建议

最终用户应复查这些关键信息(http://www.microsoft.com/protect/default.mspx)。另外,这里也有一些特殊步骤来帮助用户保护自身。

* 有鉴别选择的访问网站——用户需要意识到,即使是信任度高的网站同样也会被漏洞所影响。

有选择的访问网站有助于减少了用户暴露在漏洞下的风险。必须留意一场行为,了解面临的风险,并实施本部分提供的其他建议。

* 及时更新安全补丁

由于恶意代码通常利用了已知的漏洞,因此用户应当确保系统中的微软和第三方软件已经打好了最新的安全补丁。微软安全更新可以通过浏览http://update.microsoft.com;更多信息可浏览http://www.microsoft.com/protect/computer/updates/OS.aspx

* 禁用不必要的ActiveX控件和IE加载项目。

用户应禁用所有不必要的ActiveX控件和IE加载项目。根据KB883256(http://support.microsoft.com/kb/883256)的方法在Windows XP Service Pack2或者更新版本中来实施本步骤:

1. 打开IE。

2. 在“工具”菜单下点击“管理加载项”。

3. 选择加载项名称。

4. 执行如下方法:

* 点击更新ActiveX来更新控件,本方法并不必适用于所有的加载项。

* 点击”启用”,而后点击”确定”,来启用加载项。

* 点击”禁用”,而后点击”确定”,来禁用加载项。

以上步骤,可能需要用户重启IE来确保启用/禁用插件操作完成执行。

对于更早的操作系统,根据KB154036(http://support.microsoft.com/kb/154036)的说明进行操作。

* 减少第三方浏览器受攻击风险的步骤。

如果你使用了IE之外的浏览器,那么用户应当确保你安装的是最新版本,同时应当禁用不必要的扩展和加载项。目前流行的浏览器信息可以在如下链接找到:

Firefox - http://support.mozilla.com/en-US/kb/Firefox+Support+Home+Page

Opera - http://www.opera.com/support/

Safari - http://www.apple.com/support/safari/

* 更新反恶意程序软件

终端用户应当确保安装了最新的杀毒软件和反间谍软件,并且保持他们的更新。用户可以在http://www.microsoft.com/protect/computer/antivirus/OS.aspxhttp://www.microsoft.com/protect/computer/antispyware/OS.aspx找到更多信息。同时用户可以在 http://onecare.live.com/standard/en-us/install/install.htm申请90天的Windows Live OneCare免费使用。

【相关文章】

【责任编辑:碧海蓝天 TEL:(010)68476606】


专题
如何有效防御SQL注入攻击
安全防范与策略
U盘病毒从认识到防范
用户如何应对ANI漏洞
访谈:Windows平台,企业网站漏洞的攻击和防御
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看79048次)
·UML类图详解 (查看70420次)
·C++是垃圾语言?! (查看40014次)
·C#技术开发指南 (查看38476次)
·UML统一建模语言 (查看38067次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (430个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (249个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (281个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
勇闯IT培训黑色围城
勇闯IT培训黑色围..
CISSP认证成长之路
CISSP认证成长之路
解析35岁技术人的价值与出路
解析35岁技术人的..
· 解析35岁技术人的价值..
· 华为员工自杀频频拷问..
· 网络工程师职业规划与..
· Windows Server 2008专..
· LAMP技术精解
· AMD Phenom三核处理器..
· 充电计划之热门IT认证..
· 如何有效防御SQL注入攻..
· 2008年上半年全国软考..
· 选择适合自己的IT认证
· IPv6协议--拓展网络无..
· 了解统一威胁管理(UTM)..
· 调查:十大发现 解秘技..
· 技术人求职简历完备手册
· Vista SP1对决XP SP3
· 运营商封堵ADSL共享 中..
ARP攻击防范与解决方案
ARP攻击防范与解..
iSCSI应用与发展
iSCSI应用与发展
SQL Server 2008/2005全解
SQL Server 2008/..
· SQL Server 2008/2005..
· SOA 面向服务架构
· SQL Server 2008/2005..
· iSCSI应用与发展
· RAID——磁盘阵列基础
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· 国际文档格式标准开战
· 路由器设置与口令恢复
· 打造安全服务器
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· 了解统一威胁管理(UTM)..
ARP攻击防范与解决方案
ARP攻击防范与解..
SQL Server 2008/2005全解
SQL Server 2008/..
iSCSI应用与发展
iSCSI应用与发展
· iSCSI应用与发展
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· iSCSI应用与发展
· 三层交换技术专题
· Apache技术专题
· RAID——磁盘阵列基础
· 企业数据恢复指南
· 路由器设置与口令恢复
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍
· PHP开发应用手册