基于ASP网站SQL注入防御的方法

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:taizi0204
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该文简要介绍了SQL注入攻击的原理,并针对SQL注入的方法,给出了SQL注入攻击的防御方法。
  关键词:ASP;SQL注入;防范技术;网络安全
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)27-1996-02
  Protective Artifice for SQL Injection Based on ASP Website
  ZHANG Hao-yu,LI Ming-hao,WANG Yu-xin,SHAN Wei-wei
  (Liaoning Province Meteorology Information and Technical Support Center, Shenyang 110016, China)
  Abstract: The text Introduces elements of SQL Injection and advances protective artifice to aim at SQL Injection.
  Key words: ASP; SQL injection; keep away; network safety
  
  1 引言
  
  随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
  
  2 SQL注入原理
  
  SQL是一种用于关系数据库的结构化查询语言。它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。SQL语言可以修改数据库结构和操作数据库内容。当一个攻击者能够通过往查询中插入一系列的SQL操作数据写入到应用程序中去,并对数据库实施了查询,这时就已经构成了SQL-Injection。所谓SQL注入(SQL Injection),就是利用某些Web应用程序对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交一段特殊的数据库查询代码,根据程序返回的结果,达到收集程序、数据库及服务器的信息,获取想得到而通过正常途径无法得到的资料,使整个网站服务器失控甚至对网站进行破坏性攻击的目的。
  程序存在SQL注入,追其原因,是因为代码或者编码的不完善。但说到底,是程序员的惰性。代码的不完善,往往是因为在程序编写的过程中,没有考虑到代码的健壮性及安全性的结果,就国内现状来看,大多数网站使用的脚本语言,用ASP Access或SQLServer的占70%以上,PHP MySQL占20%,其他的不足10%,由于开发者代码编写的过程考虑不够周全,往往忽略程序代码的安全性,而使程序脚本被注入也成为必然。从攻击者的角度来看,使用SQL注入能够避免绝大多数防火墙的防御,不留攻击痕迹,攻击手法多种多样,因此才会导致SQL注入攻击手段的兴起。
  SQL注入通过网页对网站数据库进行修改。它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站的正常运营和访问该网站的网友都带来巨大危害。
  
  3 SQL注入防御
  
  SQL注入是从正常的WWW端口通过对页面请求访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙很少会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。SQL注入的手法相当灵活,可以根据具体情况进行分析,构造巧妙的SQL语句,从而获取想要的数据。针对SQL攻击的防御,现在各网站经常采用的方法,主要有以下一些解决的方法:
  3.1 检验敏感字符/字符串
  有些程序员采取针对一些敏感的字符串,主要是对SQL命令或关键字进行处理,把它们从客户端提交的信息中找到、删除,并把剩余的信息默认为安全信息写入数据库。虽然在一定程度上有效,但有“治标不治本”的嫌疑,举例来说明他的弱点,当客户端的输入为“…ccmdmcmdd…”时,在对敏感字符串“cmd”替换删除以后,剩下的字符正好是“…cmd…”。新的攻击方式正在被不断发现,只要允许服务端程序使用这些提交信息,就总有受到攻击的可能。可见这个方法是不健全的,稍加变化即可躲过检察。
  其实,最好的方法就是一旦检测到敏感字符/字符串,只要把它们屏蔽,并针对数据库的操作即行中止。具体代码如下:
  function RequestX(strGet)
  strTemp=Request.Form(strGet)
  dim nothis(16)
  nothis(0)="net user"
  nothis(1)="xp_cmdshell"
  nothis(2)="/add"
  nothis(3)="exec master.dbo.xp_cmdshell"
  nothis(4)="net localgroup administrators"
  nothis(5)="select"
  nothis(6)="count"
  nothis(7)="asc"
  nothis(8)="char"
  nothis(9)="mid"
  nothis(10)="’"
  nothis(11)=""""
  nothis(12)="insert"
  nothis(13)="delete"
  nothis(14)="drop"
  nothis(15)="truncate"
  nothis(16)="from"
  for i=1 to ubound(nothis)
  if instr(strTemp,nothis(i)) then
  Response.write "你输入的内容含有非法字符!"
  Response.write "请返回重试"
  Response.End
  end if
  next
  RequestX=strTemp
  end function
  将上述代码封装在一个asp文件中,在网页代码中可直接调用。对于纯数字的信息传递,可采用数字检验,不是数字便停止操作。应sql注入检测,主要过滤掉“’”。具体函数代码如下:
  Function ReqNum (StrName)
  ReqNum = Request (StrName)
  if Not isNumeric (ReqNum) then
  Response.Write "参数必须为数字型!"
  Response.End
  End if
  End Function
  Function ReqStr (StrName)
  ReqStr = Replace (Request(StrName), "’", "’’" )
  End Function
  这两个函数在页面中直接调用即可。
  3.2 查堵form或cookies的漏洞
  既然攻击者是通过form或cookies提交包含“or”和“=” 等特殊字符,那么我们的防范措施就是在这部分程序中加入检查或过滤这些特殊字符的代码,以实现安全目的。方法是在使用: paraname=Request.form()或paraname=Request. Cookies()获取用户名和密码后加入代码:
  If instr(paraname," ")>0 or instr(paraname," or ")>0 or instr(paraname,"=")>0 or instr(paraname,"'")>0 or instr(paraname,";")>0 then
  Response.Write "<Script Language=JavaScript>alert('用户参数中含有非法字符串!'); history.back();</Script>"
  Response.End
  End If
  
  含义:假如在用户参数paraname中找到了(空格)
其他文献
摘要:随着计算机网络技术的发展,网络安全问题越来越多的受到人们的关注,同时,也出现了各种类型的计算机病毒和木马程序。最近,出现了一种特殊木马程序——Rootkit,该文详细的介绍了Rootkit的隐藏技术和检测方法。  关键词:Rootkit;木马程序;网络安全;隐藏;检测  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)31-0838-02  Defence and
摘要:随着网络的普及,XML在电子商务和数据交换中扮演了越来越重要的角色,而PHP则一直在动态网页的设计中得到广泛应用,两者的结合具有重要的意义。该文通过对PHP语言的XML解析器的使用与编写XML操作类的两种方式进行论述,给出了在PHP中运用XML的解决途径。  关键词:PHP;XML;expat;类  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)26-1627-
摘要:本项目是基于3DS MAX的个人形象自主设计,主要通过逼真模拟人体模型,进行自主形象设计,包括服饰选择、形象装扮等,达到完美自我包装,并通过动画效果进行多角度试镜。其中,用户可输入各部位参数,动态调整人体模型,使人体模型更加逼真。本项目还提供专家指导、自我测试、服装设计、美容连线等功能。  关键词:3D人体模型;自主形象设计;形象仿真  中图分类号:TP391文献标识码:A文章编号:1009
书名:中小学教师职业道德培训手册:师德的定义养成与评估  作者:小彼得.C.穆雷尔、玛丽·迪茨等  出版社:中国青年出版社  出版时间:2016年  ISBN:9787515340777  定价:32元  教师是人类灵魂的工程师,是学生成长的引路人。教师的思想政治素质和职业道德水平直接关系到中小学的德育水平,关系到国家的前途命运和民族的未来。同时,新时代也对教师的职业素养提出了新的要求。重视中小学
摘要:随着越来越复杂的基于Web的新型服务的出现,传统的Web应用已经不能满足需要。Ajax(Asynchronous JavaScrift and XML)是指一种创建交互式网页应用的Web开发技术,是多种已经蓬勃发展的技术以一种新的形式组合而成,该文从Ajax的主要技术、工作原理以及特点等几个方面介绍Ajax在Web方面与传统Web应用相比具有独特的优势,必将有光明的前景。  关键词:Ajax
“阅读”是最古老、最基本、也最重要的学习方式之一。随着数字化时代的来临,在终身学习教育理念的普及与指向培养“核心素养”的世界教育改革浪潮中,“阅读素养”逐渐成为热门的研究命题之一。自2000年国际学生评价项目(PISA)首次在我国举行,有关“阅读素养”的文献开始在国内出现,近年来更是备受社会各界的关注。笔者通过分析2003~2017年以来在核心期刊上发表的关于“阅读素养”的论文,以期对该领域的研究
书名:外国文学作品欣赏  作者:滑明达  出版社:中国社会科学出版社  出版时间:2005年  ISBN:9787500452348  定价:78元  长期以来,外国文学作品赏析和教学的研究一直是相关领域专家学者关注的课题。在对这些课题进行研究的过程中,出现了诸多优秀成果,其中,以导读和赏析的方式對外国文学作品进行推介、解读的著作,不仅能为读者在选择和阅读的过程中提供必要的引导,也可以为教学提供参
一、“三路合一”阅读教学  本文所说的“三路”指的是文章的文路、学生的学路以及教师的教路。  文路是促成读者体悟文章的情感线索,也是体现文章思想和主旨的内隐脉络。作者巧妙构思,或使文章内容一波三折,或使情感线索突出,或使情节出人意料等,这些都是教师在研读文本时应该留意的文路。一般来说,文路多隐藏在文章的标题或者重点语句中。对教师来说,理清文路有利于依照课程目标、学生实际情况来选择合适的教学内容,保
摘要:Visual Basic For Application(VBA)是微软公司为其办公套件Microsoft Office提供的新一代标准宏语言,作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。VBA主要是根据用户对可编程应用软件中不同对象的操作,触发的相应事件,去激活相应的程序,通过对相关的对象执行不同的方法,或是修改相关对象的属性来完成特定的工作。该文介绍的内容是通