基于Web2.0的入侵检测与防范技术研究(硕士论文)


哈尔滨理工大学 硕士学位论文 基于Web2.0的入侵检测与防范技术研究 姓名:刘鑫 申请学位级别:硕士 专业:计算机应用技术 指导教师:孙名松 20090301哈尔滨理工人学工学硕士学位论文基于Web2.0的入侵检测与防范技术研究摘要随着网络通信与计算机技术的飞速发展,Web服务进入Web2.0时代,新的Web技术以突出的互动性和实时性等众多优点迅速普及。不过,新技术和新应用也引入了新的安全问题,Web2.0类的网站大量出现,对Web2.0网站的安全性作一次全面而完整的剖析显得非常重要。基于上述分析,本文从Web2.0的概念出发,详细介绍了Web2.0的技术特点,重点研究了Web2.0的安全问题,进而深入研究了两个Web2.0蠕虫,分析其机理和技术,针对其不足,指出了Web2.0蠕虫可能的发展趋势。在对各种Web攻击深入分析的基础上,本文又对入侵检测系统Snort检测Web攻击的规则做了进一步的研究。在研究过程中发现Snort最新版的Web攻击规则存在检测SQL注入攻击、跨站攻击(Cross.SiteScripting,XSS)的不足,并且不能检测Web2.0下蠕虫攻击。对规则进行改进并将Payl算法集成到Snort系统能很好地提升检测性能,所以本文设计了基于LVS(Linux虚拟服务器)和改进Snort的安全方案,从而保证Web2.0服务的安全。最后,本文在系统地学习了LVS和Snort的结构原理的基础上,在CentOS上实现了LVS构架和改进的Snort系统,并对系统抵御拒绝服务(DenialofService,DoS)攻击、检测新型跨站攻击、SQL注入攻击和W西蠕虫攻击的性能进行了测试。实验结果表明,LVS架构可以很好地抵御DoS攻击,改进的Snort在检测Web攻击准确率上有很大提高,结合LVS和Snort的Web安全方案可以很好的工作。关键词网络安全;Web蠕虫;Web2.0;入侵检测哈尔滨理_T大学工学硕十学位论文一●一·J●一··o1n』■ResearcnOnlnstrutionDetectionandrreVentlonTechnologyBasedWeb2.0AbstractWiththeswiftdevelopmentofnetworkcommunicationandcomputertechnology,webservicescomeintoWeb2.0era.ThenewtechnologyofWebstrengthenedoninteractionandrealtimingandmanyotheradvantagescomestobeing.However,newtechnologiesandnewapplicationsalsotakesomenewsecurityproblems.AlotofWeb2.0siteappears,soitisveryimportanttoanalysisthesecurityofWeb2.0sitecompletelyandcomprehensively.InthebasisofthedefinitionofW曲2.0,thisdisserationsunmaarizesthetechnicalcharacteristicsofWeb2.0,placesemphasisonthediscussionofwebsecurityissues.ThentheonlytwoexistingWeb2.0worlnsaredissectedindetailswithanatomiseoftheirmechanismandtechnology.Toimprovetheseprematureworms,wegivealltech—developmentsofnextgenerationWeb2.0worn临.OnthebasisofanalysingkindsofWebattacks,thispapermakeafurtherresearchonintrusiondetectionsystemSnortrulesdetectWebattacks.Intheprocessofresearch,itisfoundthattheSnorthasthedeficiencyOndetectingSQLinjectionandXSS(Cross-SiteScripting)attacks,andcannotdetecttheWeb2.0worms.However,modifyrulesandaddPaylalgorithmintoSnortcansolvetheproblemabovewell.So,thisdissertationpresentedthesecurityprogrambasedonLVS(LinuxV'mualServer)andmodifiedSnort,whichinsurethesafetyforWeb2.0service.Finally,thedissertationbaseonthesafetydetectionandevaluationsystem,LVSandSnortarerealizedonCentOSsystem.AndmaketesttoagainstDoS(DenialofService)attacks,detect也enewXSSattacks,SQLinjectionandWeb2.0worm.ThesimulationresultsshowthatmodifiedSnorthasgreatlyimprovedonaccuracyraterate,Websecuritysolutioncandoaverygoodwork.Keywordsnetworksecurity,webworm,web2.0,instrutiondetection.II.哈尔滨理工大学硕士学位论文原创性声明本人郑重声明:此处所提交的硕士学位论文《基于Web2.0的入侵检测与防范技术研究》,是本人在导师指导下,在哈尔滨理工大学攻读硕士学位期间独立进行研究工作所取得的成果。据本人所知,论文中除己注明部分外不包含他人已发表或撰写过的研究成果。对本文研究工作做出贡献的个人和集体,均已在文中以明确方式注明。本声明的法律结果将完全由本人承担。作者虢∞钽隅p1年3月w同NI哈尔滨理工大学硕士学位论文使用授权书《基于Web2.0的入侵检测与防范技术研究》系本人在哈尔滨理工大学攻读硕士学位期问在导师指导下完成的硕士学位论文。本论文的研究成果归哈尔滨理工大学所有,本论文的研究内容不得以其它单位的名义发表。本人完全了解哈尔滨理工大学关于保存、使用学位论文的规定,同意学校保留并向有关部门提交论文和电子版本,允许论文被查阅和借阅。本人授权哈尔滨理工大学可以采用影印、缩印或其他复制手段保存论文,可以公布论文的全部或部分内容。本学位论文属于保密1"3,在年解密后适用授权书。不保密影(请在以上相应方框内打、/)人、作者签名:酗缠同期:2009年3月y同导师签名:2009年3月)-OH哈尔滨理工大学工学硕士学位论文1.1课题的研究背景第1章绪论随着计算机技术和网络技术的高速发展,网络迅速普及到全球,Web服务给我们社会的发展带来了众多便捷服务,不知不觉Web2.0悄然而至。以Blog、RSS(ReallySimpleSyndication,简单内容聚合)、Wild等应用为代表,为用户带来了更多崭新的应用,Internet已经遍及世界上的几乎所有国家,为十几亿用户提供着多样化的网络信息服务。即使在中国,Interact的用户也已超过两亿,如此庞大的网络用户使Web发展很迅速n_射。自2005年开始,I扫Google公司发起、Apache、微软等组织和公司推广的Ajax框架技术H1,迅速在国内外各个大小网站得到了普及,无论是商业主页,还是E-mail服务,抑或是目前极为流行的Blog主页,随处可见Ajax框架搭建的页面和服务。Ajax框架的出现,代表着Web2.0时代的来临。无论是从技术角度还是人文角度出发,Web2.0都被赋予了大量的应用,Blog、TAG、SNS、RSS、Wild等均占据着显赫的位置啼1,Web2.0的Ajax框架技术极大地提高了网页的动态交互性,并提供给用户远胜于传统Web页面的全新操作体验。不过Web2.0带来众多崭新应用的同时也带来了新的安全问题。Ajax框架引入了一些容易让人忽视的安全漏洞,而一些在传统w曲应用中威胁度级别并不高的安全问题,也随着Ajax框架本身固有的一些特性,变得更容易被攻击。新型的攻击需要创新型的检测手段,Snort作为老牌的入侵检测系统,需要很好的修改才能检测出新型的攻击,在新时代的Web下才能更好工作。Web2.0下网站内容更多,对安全的依赖也就更大,需要更好的Web安全方案。1.2W曲安全的常见问题与研究现状1.2.1Web安全的常见问题Web服务带来了很多的便利和利益,不过安全问题也是层出不穷,常见的W曲安全问题如下。1.存在恶意代码Web应用程序一般是根据H1rrrP请求中用户的输入决定如何响应,黑客能够利用HrI’P请求中的任何一部分,包括URL、请求字符串哈尔滨理工人学工学硕七学位论文(QureyString)、Cookie头部、表单项、隐含参数传递代码来发动攻击。2.访问控制缺陷访问控制,有时也被称为授权,是指一个网络应用程序如何将某些内容和功能的访问权利赋予指定用户,未予授权的用户将不会有读和写的权限。而网络应用程序的访问控制通常和网站上提供的内容和功能密切相连,用户会被划进不同的组而具有不同的权限,验证之后会进行授权,就具有了相应的权限。听起来访问控制是一个简单的问题,实际上却很难正确地实现。很多W曲授权的系统都没有经过严密的论证和测试就放到网上进行应用,一旦漏洞被发现,攻击者就可以访问未授权的内容,还可以进行删除、修改网站内容,甚至控制整个网站和服务器。3.SQL注入攻击和XSS攻击SQL注入攻击是一种传播范围广、危害严重的主动攻击方式。Web应用程序从HTTP请求获得的信息作为外部请求的一部分来传递,攻击者可以把特殊字符、恶意代码或者SQL注入语句传递给服务器,攻击者只需找到一个参数传递的地方,就可以轻松利用SQL注入漏洞获得非法的信息,导致信息泄漏、数据丢失、记录篡改。许多Web服务器及应用系统都曾经被披露存在此类问题。XSS攻击(Cross.SiteScripting,跨站脚本攻击)经常是普遍存在的,在任意一个W曲应用都可能发生,一个不经验证的用户输入就可以导致XSS攻击。攻击者能够使用XSS脚本发送恶意脚本给没有发觉的用户,浏览器会认为脚本来自一个可信的来源,恶意脚本可以访问任意的Cookie、’会话或者其他敏感信息,甚至可能重写HTML页面内容进行挂马,Web2.0出现后,Ajax框架大量应用,XSS漏洞更加严重,基于Ajax框架的XSS蠕虫已经出现№一1。4.异常处理不当不当的异常处理会给网站带来各种各样的安全问题,最常见的问题就是向用户显示内部出错信息,如500错误、系统调用失败、数据库不存在、网络超时等信息,这些出错信息会展现到用户面前,导致用户可能查看了本不应该公开的细节,这些信息可能会成为黑客查找网站潜在漏洞的重要线索。异常处理的作用是为网站维护人员提供诊断信息,而不是为攻击者提供有用的信息。有时即使出错信息不能提供很多细节,也经常会把该系统如何工作这样重要的信息显示出来,并且暴露了那些出错信息背后的隐含意义。例如,当一个用户试图访问一个并不存在的文件时,通常出错信息会给出如下提示403错误“文件没找到”,当用户试图访问一份他无权访问的文件时,通常出错信息会给出如下提示“访问被拒绝”,这种区别可能会暴露这个文件是否存在,或者暗示了这个网站的目录结构。哈尔滨理T大学工学硕上学位论文5.Web数据存储不安全大多数Web应用程序都需要存储敏感的信息,比如密码、信用卡号、账号记录、邮箱或者是一些专用信息,这些信息被存储到数据库中,或者是文件系统的某个位置上。通常,这些数据是没有加密就存储的,一旦有入非法拿到了数据库就可能掌握了很多人的私密信息;开发人员有时常常在将加密技术和应用程序相结合的时候出错。他们可能过高地估计了加密技术所能带来的安全度,并且他们不会像留意网站其它部分的安全那样注意存储部分的安全。6.溢出攻击缓冲区溢出是一种很典型的软件漏洞,很多软件都存在潜在的溢出漏洞,被称为Oday攻击,攻击者通过缓冲区溢出来破坏Web应用程序的执行栈。通过向Web应用程序发送超长的恶意参数,让程序处理该参数时超过预设的缓冲区范围,导致难以预料的后果,比如黑客可以使服务器执行任意代码。黑客向存在这种漏洞的邮件服务器发送带有恶意内容的邮件,就可能获取root用户的权限。缓冲区溢出可能出现在Web服务器中,也可能出现在Web应用程序中。在广泛使用的服务器产品中如果存在缓冲区溢出问题,这会让用户面临着巨大的风险,同样,Web应用程序开发人员对安全漫不经心也会带来大量的麻烦。7.拒绝服务攻击Web应用程序很容易受到拒绝服务的攻击,对于一个网络应用程序而言,它不会很容易地分辨出攻击和正常网络通讯之间的差别,有许多的因素造成了这种情况,但是其中最重要的一点就是只使用口地址无法唯一确定网络设备。这是因为至今还没有一种可靠的方法来确定唧请求来自何方,这也就为过滤掉那些恶意的请求造成了巨大的困难。对于分布式拒绝服务攻击,Web应用程序很难区别这是一个真正的攻击,还是成千上万个用户同时访问。1.2.2国内外研究现状2002年Web服务刚兴起的时候,BloorNA公司发布了“W曲ServicesGotchas"报告,将Web服务的安全和隐私(Security/Privacy)作为限制Web服务发展的首要问题阻1。Web2.0时代的到来使国外对其安全的研究更是加倍重视,成型的论文虽然不多,不过已经有很多期刊和图书发表,并且有大学的教授和高级的安全人员从事此方面研究,有些成果很有借鉴意义。提出了很多新理论、新见解和新的解决方法。哈尔滨理工大学T学硕上学位论文目前,许多标准化组织、公司和研究机构都对Web服务的安全问题进行过研究。其中,W3C(WorldWideWebConsorti啪,WWW联盟)和IETF(InternctEngineeringTaskForce,Intcrnet工程任务组)共同提出了XML数字签名规范,该规范定义了如何对一个XML文件的部分或者全部进行数字签名。W3C还提出了XML加密规范,对一个XML文件的部分或者全部加密。另外,W3C还制定了SOAP安全扩展(SOAPSecurityExtension),该安全扩展规定了如何对SOAP消息进行加密、签名的规则M。OASIS(OrganizationoftheAdvancementofStructuredInformationStandard,结构化信息标准促进组织)提出了XML密钥管理规范(XMLKeyManagementSpecification,XKMS)。它规定了Web服务中密钥的注册和分发。该组织还提出了SAML(SecurityAssertionMarkupLanguage,安全声明标记语言),用于在域间交换授权和认证信息的标准n引。目前,Web服务安全方面最权威、最全面的规范是由微软、IBM以及VedSign公司共同提出的WS.Security规范。该安全规范将一些公认的安全规范、技术统一起来,将XML加密、XML数字签名、XML消息安全扩展以及SAML等结合在一起⋯1。英国的JISC(JointInformationSystemCommittee,联合信息系统委员会)资助了一个AAA(Authentication、Authorization、Accounting)项目。该项目对广泛服务于英国高校及研究机构的Zctocw.曲服务接口进行了安全评估和安全体系设计。通过该项目的研究,以此来切入对英国eScienc总环境下安全问题的评估和研究n引。在安全评估工具上,SPIDynamics公司所开发的Web应用评估工具WebInspect,它可以工作于Web应用的整个生命周期,其目的是要减少产品的风险和开支,在应用产品发布之前尽可能找出存在的所有漏洞,确保可信产品的开发n31。另外,一些软件巨头也提出了W曲服务安全问题的解决产品。例如,BEA公司提出了基于WebLogic框架的Web服务安全支持解决方案;微软公司则提出了基于.NET平台的Web服务安全问题实现方案WSE(WebServicesEnhancements)。目前,WSE的最新版本是WSE3.0,WSE3.0基于.NETFramework2.0和最新的W曲服务安全规范来建立安全的Web服务n引。但是,目前在国内的研究当中,似乎并没有成型的理论提出来,也没有人提出一个具体的方向。大多数的研究只是就事论事,一个问题提出来马上去研究这个问题的解决方法,而不去进行深入的研究,大部分的文章只停留在肤浅哈尔滨理T大学工学硕上学位论文的表面,讨论浅尝辄止。国内对Web安全研究比较多的大多是一些民间的黑客组织,技术参差不齐,没有很好的理论支撑。‘不过还是有很多大学的专家对W曲安全进行了深入研究,开放他们的研究成果。上海交通大学的林承吉从应用层的角度对w曲服务的安全性进行了详细分析,并利用J2EE平台设计了一个安全架构,以此来满足基于Web服务的电子商务的安全需求;华南师范大学计算机学院的毛承品等人分析了传统安全技术对Web服务保护的缺陷,并且提出了基于协同的Web服务安全模型。该安全模型基于一种协同应用,实现了对UDDI、SOAP、WSDL的保护;国防科技大学正在研究基于网络的Web应用安全测试评估系统,通过构造各种攻击消息进行实时地模拟攻击,记录并分析w曲应用对这些攻击行为的处理过程和攻击结果,找出应用中存在的缺陷n51。值得~提的是,国内在Web服务、信息系统安全保护等方面也进行了一些非技术性探讨。例如,西安电子科技大学的文立玉在信息安全标准技术研究与信息安全法律法规研究中,就对信息系统的安全评估标准、中国的信息安全法律法规进行了全面的分析和研究¨¨71。1.3本文的主要工作本文首先要对W曲2.0的安全问题进行全面深入的分析;对两个典型的Web2.0蠕虫进行深入研究,争取能够预见今后蠕虫的发展趋势;改进Snort检测SQL注入攻击、XSS攻击规则的正则表达式,并对Snort进行改进,提出检测Web2.0蠕虫的算法;最后在前面工作的基础上提出一个结合LVS(LinuxVLrmalServer,Linux虚拟服务器_)和Snort架构的Web安全方案n¨射,对系统进行实验测试,讨论方案的执行情况。1.4论文组织结构本文共由5章组成,第l章首先介绍了Web2.0的常识性知识,并说明了常见的Web安全问题,提出课题的研究背景。第2章主要是分析了传统Web架构(WebI.∞和Ajax框架的W曲架构(Web2.O)的设计模式和架构特点,并对比分析了双方在性能、复杂度、安全性等方面的优劣。并在各个方面详细的对Web2.0的安全薄弱点做了研究,并对各种攻击手段在Web2.0下的具体实现做了分析。哈尔滨理T大学工学硕上学位论文第3章主要在各个方面详细地对Web2.0下可能出现的安全薄弱点做了研究,并对SQL注入、XML注入、XSS攻击、DoS攻击等攻击手段在Web2.0下的具体实现做了分析。第4章则对目前两个出现在网络上典型的W曲2.O下基于AjaX框架的蠕虫作了深入地分析,得出了Web2.0蠕虫传播、破坏的机理,并结合其他网络安全知识,预测了Web2.0蠕虫在未来可能采用的技术手段和进一步发展方向。第5章主要是对Snort检测Web漏洞的正则表达式规则进行分析和改进,提出一个检测Web2.0蠕虫的算法,使Snort可以在Web2.0的时代下更好的检测,提出使用Snort结合LVS的Web安全方案,并进行了实验和测试。哈尔滨理工人学工学硕十学位论文第2章Web2.0的技术特点2.1Web2.0概述W曲2.0的概念展开于O’REILLY公司和MediaLive国际公司之间的头脑风暴部分。它不是一个新的技术名词,而是指一个新的互联网时代。我们过去所熟知的互联网被称作是W曲1.O时代,与W曲1.O相比,W曲2.O凸显了“以人为本"的特征,从概念的提出到现在,不过两年的时间,Web2.0已经遍及到了各大网站。值得一提的是Web2.0的概念虽然已经提出很久了,却一直没有一个统一的概念,其实很多网站已经具备了Web2.0的部分特征,比如大范围流传的Blog、以短消息为特性的RSS、TAG等。Web2.0相对于Webl.0有很大的转变,浏览器从传统的浏览器到各类浏览器,Web的缔造者也从专业人士转换到普通用户,以六度分割、Ajax、XML等新理论为支撑,以Blog、TAG、Wiki、RSS等应用为代表,显然Web2.0带来了全新的服务和更丰富的内容,在实际中更是发展得很快∞,2¨。1.互联网的交互性Web2.0更强调互联网用户个体。Web2.0时代的互联网不再是“只读”的,更是“可写”的。任何人都可以很方便地在网上建立自己的个人门户,发布自己的信息,拥有自己的读者甚至是订阅者。互联网内容的重心也正在从屈指可数的大门户网站向数以百万计的个人门户倾斜。这些离散的个人信息岛被链接、RSS和搜索引擎连接起来,任何人都可以贡献信息,分享信息。Blog、Wiki等都是提供“全民制造"服务的网络系统。2.互联网的社会性网民的社会性活动催生互联网社会性的发展。新时代的互联网越来越像现实社会,每个人不仅可以建立自己的网上家园,还可以在网上拥有自己的各类圈子,如朋友圈、工作圈、爱好圈等。提供建立社会关系圈服务的网络社区系统(SNS)应运而生,MySpace.com、赛我网、还有国内的uuzone等,都是这样的Web2.0网站。3.互联网的可开发性Web2.0的技术核心是WebService,开放WebAPI接口和RSS等标准的建立,使得互联网变得容易编程。“Web2.0让互联网更适合于计算机",含义也在于此。随着互联网作为开发平台的能力逐渐增强,很多基于操作系统平台的应用程序改头换面,成为更加易用的在线服务,例如微软正在建造的在线Office。基于互联网平台上开放的WebAPI,成熟的Web2.0网络应用系哈尔滨理工大学工学硕上学位论文统之间可以方便地共享功能和资源,这是给用户提供优质服务的基础,同时也使得这些系统的规模和复杂度可以达到W曲1.0时代无法实现的高度。安全性维护对于w曲2.O网站系统来说,难度更高,也更加重要晗射。2.2传统Web的特点和Web2.0的特点2.2.1传统Web服务概述传统Web网站的主页都是采取了静态的HTML,仅仅为了界面上的美观、排版和管理上的方便而添加了一些简单的JavaScript动画和Iframe元素。而在要求实时性强的留言本或是BBS系统,动态网页处理语言——ASP、PHP和JSp,贝I|占据了压倒性的优势,但无论是哪种语言,本质上都是由服务端驱动的静态HTML网页;Web服务器根据用户通过浏览器请求的信息和若干参数,在内部调用动态的解析语言,查找内部的数据库服务器保存的相应数据,最后生成一张包含图片、音乐、甚至动画的静态HTML页面,将其显示在用户的浏览器上。传统W曲工作流程如图2.1所示。客户端用户请求用户请求用户请求‘\>‘7\>1广>。∑么∑么\服务端\/数据传输\/y系统进程差>用户请求毫户请求7>图2.1传统WebI作流程示意图Fig.2-1Thework-flowoftraditionalWebapplication故就用户而言,无论是最传统的静态页面还是采取了服务端驱动的动态语言,无论用户做了填写表单、提交表单、还是做了“点击超链接"的操作,浏览器的行为都是一致的。哈尔滨理T大学T学硕十学位论文1.完全刷新当前客户浏览器显示的页面。2.从W曲服务器获取全新的HTML页面。3.显示从W曲服务器获取的最新页面,并等待用户下一次操作。我们可以得到传统Web的工作特征。1.用户每次得到的页面都是全新的页面。2.所有的请求来自用户对页面的操作。‘3.工作流程是“用户操作.>服务器相应.>用户操作.>服务器相应"循序渐进式的,或者说是非异步的。2.2.2W.eb2.0的特点Web2.0下最重要的技术之一就是Ajax。Ajax是AsynchronousJavaScriptandXML的缩写,是一种运用JavaS砸pt和可扩展标记语言(eXtensibleMarkupLanguage,XML),在浏览器和服务器之间传送或接收数据的技术。由于传统Web应用程序在实现中无可避免的等待机制——-等待服务器响应、等待屏幕刷新、等待请求返回和生成新的页面,使得发展受到了很大的制约。而Web2.0中Ajax技术的应用,大大建立了桌面应用程序的功能和交互性,成为不断更新的Web应用程序之间的桥梁。使得Web可以使用像桌面应用程序中常见的动态用户界面和漂亮的控件。Ajax应用程序主要用到了以下几种技术:1.JavaScript代码通用的脚本语言,用来嵌入到应用之中。是运行Ajax应用程序的核心代码,将其它的技术捏合在一起,帮助改进与服务器应用程序的通信。2.CSS层叠样式表为Web页面元素提供了一种可重用的可视化样式的定义方法。用于统一修改用户的界面样式。3.文档对象模型DOM用于(通过JavaScript代码)处理HTML结构和(某些情况下)服务器返回的XML。4.XMLHttpRequest对象允许Web程序员从W曲服务器以后台方式获取数据。数据格式通常是XML,但也可以很好的支持任何基于文本的数据格式。Ajax所依赖的这四项技术之中,CSS、DOM和JavaScript这三个都不是新技术,它们以前合在一起被称之为动态HTML,或者简称为DHTML。DHTML它可以为Web页面创造各种新奇古怪,交互性很强的界面,但是它永远也无法克服用户请求后,需要完全刷新页面的问题,结果使得其空有漂亮的界面,但无法在操作上给用户带来更多的便利,而且相对于静态HTML,还多出了编写吮尔滨理T火学T学硕lj学位论文复杂,调试工具缺乏等一系列问题㈣。而Ajax技术中唯一引入的新技术——xMLHTTPRequest对象则解决了刷新这个问题,XMLHT-l'PRequest对象允许浏览器动态的建立一个HTrP请求,并解析一个XML服务响应,其最大的特点是工作在异步模式下,根据用户的请求,在后台异步的和W曲服务器进行通信。其中,浏览器整个请求的过程,包含了XMLHTFPRequest和CSSkDOM的互动,而这三种技术,是通过JavaScript来捏和实现的。整个Ajax框架技术在实现过程中,参照了桌面应用程序的设计思路。桌面应用程序之所以具有强大的交互性和实时性,l其事件驱动的特征功不可没,尽管程序本身无法对未来何时事件被触发做出预测,但是通过事件的回调函数,任何用户的行为都能被程序截获并做出相应动作。而现在网络浏览:器(Mozilla、InternetExplorer等)对JavaScript的onkeypress,onmouseover等事件的完美支持,为w曲应用程序交互性的提高打下了坚实的基础,尤其是对onreadystatechange事件的支持,使得浏览器可以实时的对页面的状态变化做出反应,随时可对XMLHTTPRequest异步请求,从Web应用服务器取得的数据进行处理。其工作流程如图2.2所示。图2.2Web2.0.-1-.作流程示意图Fig.2-2Thework-flowofWeb2.0哈尔滨理工大学工学硕士学位论文与传统Web不同的是,Web服务器传输给客户端的往往不是完整的Web页面,而是通过XML或者是JavaScript散列所封装的数据,这些数据通过浏览器支持的JavaScdpt的引擎解析,动态显示在当前页面上,从而使得Web应用程序达到了桌面应用程序的高交互性和实时性。对用户而言,由于工作流程变成了异步处理,他们可以在浏览器后台与服务器进行通信的同时,继续自己的操作而不被刷新打断(比如,当用户在浏览GoogleEarth时,用户拖动地图,浏览器便在后台请求新的地图照片,此时用户可以继续拖动地图),而一旦来自服务器的数据经客户端Ajax引擎解析完毕,就能随时刷新显示在当前页面上。2.2.3Wreb2.0相对于Wrebl.0的优缺点Web2.0相对于Webl.0服务的优点是显而易见的。首先,Web2.0下的Ajax是异步的网络服务,客户端可以当用户在前台操作的同时,在后台和服务端进行通信,并实时的把服务端的信息显示在浏览器上;其次,Web2.0下的架构中,客户端和服务端传输的不是整页整页的HTML页面,而是经过封装的小段数据,大大降低了网络的通信负荷。然而,相对于传统的Web服务,Ajax框架服务也带来了一些不可忽视的负面影响。1.Ajax需要浏览器支持尽管目前最新版本的Mozilla和InternetExplorer都支持XMLHTrPRequset对象,但是老版本对于XMLHTrPRequest的支持却不尽如人意,而其他的非主流浏览器还不支持XMLHTrPRoquest对象,这需要Web服务的设计者在设计Ajax框架页面的时候要考虑全面周到,否则,网站将失去这些客户,这对视网站点击率为生命的门户网站而言是不可接受的。而开发如此一套非Ajax框架的页面,不但将增加网站的开发成本,也会增加被恶意攻击者攻击的潜在入口。即便同是XMLHTTPRequest对象,Mozilla的命名和IE的命名还有差别,需要区别对待。2.客户端程序难以调试Ajax技术将原本完全在Web服务器中实现的逻辑(原本在Web服务中由PHP、ASP、JAVA实现)部分转移到浏览器中的JavaScript中来实现,网页中包含有大量的JavaScript代码,因而Ajax框架是一种具有一定的胖客户特征的瘦客户模型,与传统Web服务的瘦客户模型相比,Ajax框架的应用服务器不负责用户界面的构造,这一工作由浏览器来做,所以客户端“胖"了一些。而构造用户界面的JavaScript界面一向以难以调试、测试而著名,因此哈尔滨理工大学工学硕士学位论文Web2.0的Ajax框架页面往往相对于传统的Web页面容易包含更多的bug和安全隐患。3.服务端负荷增加Ajax框架使用的异步通信模型大大提升了浏览器的互动性,但是由于客户端的Ajax引擎会在后台不断和服务器通信,因此会大大增加客户端和服务端的通信次数,使得服务端的负载高于传统的Web架构,带来服务端的性能下降。不过,由于客户端的异步刷新机制,用户对服务端性能下降的敏感度反而会低于传统Web服务。4.导航方式不合理由于Ajax框架页面内容的更新在不彻底刷新页面的情况下进行,因此虽然网页的内容发生了变化,但是其对应的URL却是相同的,用户无法通过点击浏览器自带的“前进’’和“后退’’按钮来抵达想要达到的页面,而只能点击页面内的元素来进行导航,大大复杂了用户的操作过程。5.开发流程复杂由于Ajax框架中服务端和客户端都有各自的逻辑,因此在开发Ajax的Web应用时,必须有两个团队分别进行服务端和客户端的开发和测试。而由于客户端的开发语言(Javascript)和服务端的开发语言(Java、PHP、@瞎)完全不同,测试团队在做系统测试的时候将会面临比传统Web大得多的风险和时间耗费,而Ajax框架众多的服务端入口点,亦会大大增加测试的用例数量。2.3本章小结本章首先介绍了Web2.0的关键技术之一Ajax架构的服务机理,分析了其技术特征和工作流程,并结合传统Web服务的特点进行了对比。然后根据对比结果给出了Ajax架构的Web服务相对于传统的Web服务在性能、实现、成本、复杂度、兼容度等方面的优缺点,并引出了Ajax架构可能会带来一些安全性问题。这些问题将在下章中被描述并详细分析。哈尔滨理工人学工学硕上学位论文第3章Web2.0的安全问题Web2.0既是人文概念也是技术概念,作为Web技术的发展和自然演进,Web2.0并非脱离早期Web技术的更迭版本,也不是单纯的技术升级。应该认识到很多技术已经存在并发展了很长时间,不应将其作为所谓Web版本区分的标准。因此,作为需求的产物,讨论Web2.0的安全问题不能人为地割裂和原有技术的关联性,也就是不能孤立地讨论Web2.0体系下发展出的技术,如仅仅讨论Ajax的安全问题。对于Web2.0而言,Client/Server结构向WebServices结构的转变使得讨论其安全性不能像早期的Web应用一样一概而论。但是,众所周知要具体实现一项Web应用,无论是否是基于Web2.0的W曲服务器、实现w曲服务的软件系统、后台数据库系统,以及具体的数据提交实现手段,如XML、CGI、Ajax等,都是必不可少的,因此和WebI.0相同,Web2.0仍然需要关注服务端系统、数据库、系统实现技术等方面的安全问题,而相关问题的分类仍然是参照Web访问结构,即服务端、客户端、信道幢引。对于Web2.0所充斥着的大量技术概念,零散地讨论其安全性是毫无意义的。因此,对于Web2.0中具体的实现技术,如Ajax,套用Web2.0中的原子内容AtomContent的概念,在讨论其安全性时,应该就其实现细节加以“拆分”,在所获得的原子技术AtomTochnology基础上入手加以分析啪1。3.1SQL注入问题SQL注入是Web服务中最广泛,也是最严重的安全问题。和一般的缓冲区溢出不同,SQL注入并不源于某个程序本身的漏洞,而是源于Web页面对用户输入内容没有彻底检测和过滤所致。恶意用户不但可以通过SQL注入取得数据库中的信息,甚至可以获得Web服务器的SHELL窗口。3.1.1SQL注入原理SQL是一种数据库专用的计算机语言,是一种标准查询语言。SQL语言不仅仅具有查询数据库的功能,而且可以对数据库完成选取、增删、更新等各种操作。随着SQL语言在程序开发语言中的大量使用,大多数SQL注入式攻击就是攻击者利用Web应用的安全隐患来实施攻击。在编写代码的时候没有对用哈尔滨理T大学工学硕士学位论文户输入的数据进行合法性判断是形成Web应用安全隐患的主要原因;还有一些SQL注入是利用数据库的系统存储过程以及一些系统表来进行攻击。攻击者利用Web应用中使用的SQL语句,根据返回的结果来判定是否已经获得想要的数据或者再调整恶意参数、使用其他SQL注入方式来进行攻击。这种攻击的危害性相当大,攻击者能够获取、更改、甚至破坏数据库中的数据啪1。SQL注入命令可以人为的输入到URL、表格域、或者一些其他动态生成的SQL查询语句的输入参数中,完成攻击。因为大多数的Web应用程序都会依赖于数据库的海量存储和相互间的逻辑关系(用户权限许可、设置等),所以,每次的查询中都会存在大量的参数。做一个简单的测试或许会发现可能导致严重问题的微小缺陷。下面是一个最简单的登陆框验证程序代码。SQLQuery=”SELECTUsemameFROMUsers、VHEREUsemame="’&strUsemame&”’ANDPassword=m&strPassword&m竹strAuthCheck=-GetQueryResult(SQLQuea'y)IfstrAuthChcck=竹”ThenboolAuthcnticatcd=Fal∞’ElseboolAuthenticated=TrueEndIf其中,strUsername和strPassword是用户输入的用户名和密码,没有经过检验,此程序看似逻辑合理,只有当用户名和密码匹配才允许用户登录。但是若用户在用户名和密码处分别输入“’0rn_,,,时,SQLQucry的查询字符串将变成:SELECTUsernameFROMUsers、7VrHEREUscrname=t’0R’-_’’ANDPassword=’’OR’.一.t’而这条查询语句的执行结果总为真,这将导致攻击者获得用户的权限。由此可见,只有对用户输入的字段进行认真而详细的过滤,才能避免在Web服务中引入SQL注入。3.1.2SQL注入问题在Web2.0下的体现进入Web2.0后在Ajax架构中,客户端和服务端通信在后台进行,但是这样依然有安全隐患,有经验的黑客高手通过分析客户端的源代码,可以轻而易举的取得后台发送到服务器的所有请求字符串。在Ajax的框架下,请求的情况比传统Web稍微复杂一些,一共分为两种情况。哈尔滨理T大学工学硕上学位论文1.和传统Web类似的字符串输入式查询,这种查询常见于BBS系统,内容可以由用户任意输入,无论是通过POST方式还是GET模式的查询,用户都可以在Text框中直接输入字符串进行漏洞的试探,这种类型的查询在传统Web服务中,通常在服务端有很严格的检查,而在Ajax框架中,同样的检查一样是必须而有效的。2.类似于GoogleMap的自动后台请求查询,这种查询的值往往由客户端的JavaScript内置,用户无法直接在页面中输入非标准的值向服务端请求数据。举例来说,一个国际连锁零售公司开发了一个导购网站,这个网站显示一张世界地图,而这张地图可以被用户用鼠标拖动,当用户的鼠标焦点落在某个国家范围内,则页面将显示这个公司在此国家内所能提供的商品列表例。当一个黑客通过分析源代码,进行测试找到一个关键字段值的有效性进行检验,便形成了SQL注入的漏洞。攻击者不但可以通过构造特殊的SQL语句,取得隐私信息,甚至可以修改一些重要信息或者删除整个数据库中的条目。攻击者不能象传统方式那样通过URL进行注入,但是通过HTTP的GET和POST的方法发送到Web服务器,攻击者可以通过修改客户端JavaSeript的源代码来修改XMLHTTPRequ锱t对象发送到Web服务器的值。或者,攻击者可以从当前的Web页面中截取得相应地址,并依据传统的SQL注入法,用NC或CURL这类工具向被截取地址输入类似于带“id=land1=1"等的查询字符串来查找注入点,最后向此地址发送带有特殊SQL字符串的Web请求,完成攻击任务。3.2跨站攻击问题XSS攻击是一种通过虚假的Web页面内容伪装用户的常用方法。从字面意思上也不难看出,这种欺骗是通过在易受攻击页面的URL地址栏或者表单中输入脚本实现的。最初的XSS攻击针对的是应用层的W曲服务弱点可以被恶意的第三方轻松的盗取Cookie,导致个人隐私泄露;之后XSS攻击发展到可以挂马的阶段,只要用户浏览了有XSS漏洞的恶意页面就会感染木马;随着Web2.0的出现,新技术大量应用,网页内容更多来自普通的网民,虽然带来很多方便快捷的服务,不过这也意味着黑客有了更多的机会,基于Ajax框架的XSS蠕虫已经出现,危害极大。3.2.1XSS攻击方法在2000年2月20日,CERT公布了最新的安全漏洞影响所有的Web服务.15.哈尔滨理工大学工学硕士学位论文产品,这个漏洞被称为Cross.SiteS嘶p曲g。Web程序错误的相信来自客户端的数据导致一些浏览用户受到攻击。Web页面经常在应用程序的某个地方对用户的输入进行回显。一般而言,在预先设计好的某个特定域中输入的纯文本才能被回显,但是HTML并不仅仅支持纯文本,还可以包含多种客户端的脚本代码,以此来完成许多操作,诸如验证表单数据,或者提供动态的用户界面元素嘲1,这样恶意伪装成HTML的代码就形成了攻击。HTML支持了很多种将脚本嵌入到页面中的机制,最常见的就是使用