您当前的位置:首页>>技术中心>>硬盘维修文章>>正文
 
SQL指令植入式攻击的危害及其防范措施
作者: 来源: 日期:2009-7-8 17:52:13  点击次数:

("ArticleContent") Set objRS = Nothing %>
 

 

 


在一般情况下,此 ASP 脚本能够显示具有特定 ID 值的文章的内容,而 ID 值是由 URL 中的 querystring 参数指定的。例如:当URL为http://www.example.com/Article.asp?ID=1055 时,ASP 就会根据 ID 为1055的文章提供的内容生成页面。


如同前述登录页面的例子一样,此段代码也向SQL 指令植入式攻击敞开了大门。某些恶意用户可能会把 querystring 中的文章 ID 值偷换为“0 or 1=1”等内容(也就是说,把 URL 换成http://www.example.com/Article.asp?ID=0 or 1=1) 从而诱使 ASP 脚本生成不安全的SQL指令如:


代码:SELECT * FROM tblArticles WHERE ID=0 or 1=1
 


于是,数据库将会返回所有文章的内容。


当然了,本例服务器所受的攻击不一定会引起什么严重后果。可是,攻击者却可能变本加厉,比如用同样的手段发送 DELETE 等SQL指令。这只需要简单地修改前述 URL 中的querystring 参数就可以了!例如:任何人都可以通过 http://www.example.com/Article.asp?ID=1055; DELETE FROM tblArticles ”之类的URL来访问Web网站。

 


SQL指令植入式攻击的危害


SQL 指令植入式攻击可能引起的危害取决于该网站的软件环境和配置。当 Web 服务器以操作员(dbo)的身份访问数据库时,利用SQL 指令植入式攻击就可能删除所有表格、创建新表格,等等。当服务器以超级用户 (sa) 的身份访问数据库时,利用SQL 指令植入式攻击就可能控制整个SQL服务器;在某些配置下攻击者甚至可以自行创建用户帐号以完全操纵数据库所在的Windows 服务器。


SQL指令植入式攻击


杜绝SQL 指令植入式攻击的第一步就是采用各种安全手段监控来自 ASP request 对象 (Request 、 Request.QueryString 、 Request.Form 、 Request.Cookies 和 Request.ServerVariables) 的用户输入,以确保 SQL 指令的可靠性。具体的安全手段根据你的 DBMS 而异,下面给出的都是基于 MS SQL Server的例子。


在前述登录页面的例子中,脚本期望得到的两个输入变量 (txtUserName 和 txtPassword)均为字符串类型。无论用户在哪个参数中插入单引号,他都可能让数据库执行单引号中的 SQL 指令。为了杜绝此类SQL 指令植入式攻击,我们可以借助 Replace 函数剔除单引号,比如:


代码:p_strUsername = Replace(Request.Form("txtUsername"), "", "")

p_strPassword = Replace(Request.Form("txtPassword"), "", "")
 

 

 

在第二个例子中,脚本期望的输入变量是长整型变量 (ID) 。用户可以通过在 ID 参数中插入特殊字符来运行不安全的 SQL 指令。为了为了杜绝此类SQL 指令植入式攻击,我们只需要借助 CLng 函数限制 ID 值为长整型变量,比如: 代码:p_lngID = CLng(Request("ID"))


当用户试图在 ID 中包含特殊字符时,CLng 就会产生一个错误。


为了进一步减少SQL 指令植入式攻击的危胁,请务必清除客户端错误信息文本中的所有技术资料。某些错误信息往往泄露了技术细节,从而让攻击者可以看出服务器的安全漏洞所在。这里指的错误信息不但包括应用程序生成的消息框,还包括来自 IIS 的出错提示。为此,你可以禁止由 IIS 发送的详细错误信息,而改用自定义的出错页面。


最后,为了减轻SQL 指令植入式攻击的危害,请限制 Web 应用程序所用的数据库访问帐号权限。一般来说,应用程序没有必要以 dbo 或者 sa 的身份访问数据库。记住,给它的权限越少,你的网站越安全!你还可以考虑分别给每个需要访问数据库的对象分配只拥有必需权限的帐号,以分散安全漏洞。例如:同是前端用户界面,当用于公共场所时就比用于具有本地内容管理机制的平台时更加需要严格限制数据库访问权限。

本新闻共2页,当前在第2页  1  2  


上一篇:防止Access数据库被非法下载的方法比较
下一篇:结束网站恶梦-SQL注入隐患
  北京总部: 4006-505-808
  天 津 部: 4006-505-808
  上 海 部: 4006-505-808
  深 圳 部: 4006-505-808
  广 州 部: 4006-505-808
  重 庆 部: 4006-505-808
  南 京 部: 4006-505-808
  其它地区: 4006-505-808
经典案例
中国石油管理局-Oracle数据库恢
中国网通-IBM EXP300磁盘阵列数
大连鸿德经贸有限责任公司-SQL
中国地质环境监测院-HP LH3000
藁城市东街百货-EFS文件解密成
工商银行某省分行-AIX删除LV数
中央电视台新闻评论部-苹果分
promise乔鼎硬盘阵列数据恢复成
麒麟童文化-苹果分区无法打开,
NAS 8100服务器数据恢复成功 
解决方案
raid磁盘阵列OFFLINE后的应急方
磁盘未被格式化,是否格式化数据
误GHOST、误一键恢复灾难应急方
误删除、误格式化数据灾难应急
LINUX FSCK数据出错灾难应急方
北亚数据恢复 - 联系我们 - 关于北亚 - 友情链接 - 网站地图 - RSS聚合 
版权所有 北亚数据恢复中心
全国统一客服热线:4006-505-808
北京总部:北京市海淀区中关村大街11号E世界A座8层832B室