已阅读5页,还剩74页未读, 继续免费阅读
(系统分析与集成专业论文)基于aspnet架构web应用的安全性研究及应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 基于互联网的w e b 应用发展迅速,尤其是随着微软加入了开源的大军后,基于 a s p n e t 架构的w e b 应用发展更是如雨后春笋般迅速。但w e b 应用程序的安全性却一 直被人们忽略,或者通常被当作网络安全问题。应用程序架构师和开发人员将安全性看 作事后处理的任务,或在时间允许的情况下( 通常是在解决性能问题之后) 才考虑安全 性要求。面对一系列的安全性事件,w e b 应用程序的安全性是应该被提到议事日程上来 了。 本文就a s p n e tw e b 应用程序安全性及在实际中的应用进行了详细的探讨。研究 了基于a s p n e t 架构的应用程序的安全性基本原理以及它所面临的威胁。结合作者所 参与的“企业门户网站信息平台建设”,对a s p n e t a 安全行进行分析,并在此基础上, 提出了可行的解决方案。研究工作主要涉及以下方面: 本文对a s p n e t 安全技术作了详细阐述,分析了“企业门户网站信息平台建 设”项目的安全问题,提出了解决跨站脚本攻击、h 1 曙响应拆分攻击及s q l 注入攻击的方法; 实现了基于角色的f o r m s 身份认证与u s b k e y 认证结合的统一身份认证系统, 并且在项目中成功实施。在此基础上实现了“企业门户网站信息平台建设” 并完成了安全性改造。 提出了存储敏感数据的方法,实现了使用带有s a l t 的哈希值对敏感数据加密 的算法。 关键词:a s p n e t ;完全;漏洞;s q l 注入;跨站脚本;身份验证 a b s t r a c t i n t e r n e t b a s e dw e ba p p l i c a t i o n sd e v e l o pr a p i d l y , e s p e c i a l l yw i t hm i c r o s o f tj o i n e dt h e r a n k so fo p e ns o u r c e ,t h ea s e n e tw e ba p p l i c a t i o nd e v e l o p m e n ti sq u i c k l ym u s h r o o m e d h o w e v e r , w e ba p p l i c a t i o ns e c u r i t yh a sb e e no v e r l o o k e d ,o ro f t e na st h ei s s u eo fn e t w o r k s e c u r i t y a p p l i c a t i o na r c h i t e c t sa n dd e v e l o p e r sh a v et r a d i t i o n a l l yt r e a t e ds e c u r i t ya sa n a f t e r t h o u g h to ra saf e a t u r et ob ec o n s i d e r e da st i m ep e r m i t s - - - - u s u a l l ya f t e rp e r f o r m a n c e c o n s i d e r a t i o n sa r ea d d r e s s e d f a c e dw i t has e r i e so fs e c u r i t yi n c i d e n t s ,w e b a p p l i c a t i o n s e c u r i t ys h o u l db er e f e r r e dt ot h ea g e n d a t h i sa r t i c l ee x p l o r e sa s e n e tw e ba p p l i c a t i o ns e c u r i t ya n di t sd e p l o y m e n ti ns o m e d e t a i l s ,a n da n a l y z eb a s i cp r i n c i p l e so fa s p n e tw e ba p p l i c a t i o n ss e c u r i t 5a sw e l la st h e t h r e a t si tf a c e s i tt a k e s “c o n s t r u c t i o no fe n t e r p r i s ep o r t a li n f o r m a t i o np l a t f o r m p r o j e c ta sa n e x a m p l e ,w es t u d yt h ea s e n e tw e ba p p l i c a t i o ns e c u r i t 5a n do nt h eb a s i so ft h es t u d y , t h e a u t h o rp u tf o r w a r daf e a s i b l es o l u t i o nf o ri t r e s e a r c hw o r km a i n l yi n v o l v e st h ef l o w i n g : t h i sp a p e rd e s c r i b e st h ea s e n e tw e ba p p l i c a t i o ns e c u r i t yt e c h n o l o g y , m a d ea d e t a i l e da n a l y s i so ft h e “c o n s t r u c t i o no fe n t e r p r i s ep o r t a li n f o r m a t i o np l a t f o r m ”, p u tf o r w a r das o l u t i o nt oc r o s s s i t es c r i p t i n ga t t a c k s ,h t r pr e s p o n s es p l i t t i n g a t t a c k sa n ds q l i n j e c t i o na t t a c k s i nt h i sp a p e r ,ar o l e b a s e df o r m sa u t h e n t i c a t i o nc o m b i n e du s b k e yu n i f o r mi d e n t i t y a u t h e n t i c a t i o ns y s t e mh a sb e e nr e a l i z e d i th a sb e e ns u c c e s s f u l l yi m p l e m e n t e df o r t h ep r o j e c t o nt h i sb a s i s ,t h ea u t h o rr e a l i z e dt h e “c o n s t r u c t i o no fe n t e r p r i s ep o r t a l i n f o r m a t i o np l a t f o r m ”,a n dc o m p l e t e dt h es e c u r i t yt r a n s f o r m a t i o no fi t t h ea u t h o rp u tf o r w a r dam e t h o dt os t o r es e n s i t i v ed a t a a n dr e a l i z e dt h ea l g o r i t h m s w h i c hu s es a l tw i t ht h eh a s hv a l u et oe n c r y p ts e n s i t i v ed a t a k e yw o r d :a s p n e t ;s e c u r i t y ;v u l n e r a b i l i t y ;s q li n j e c t i o n ;c r o s s s i t es c r i p t i n g ; a u t h e n t i c a t i o n 湖北大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任 何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡 献的个人和集体,均己在文中以明确方式标明。本人完全意识到本声明的 法律后果由本人承担。 论文作者签名:雀) 每僮 日期:冲年多月2 彦日 学位论文使用授权说明 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即: 按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文 的印刷本和电子版,并提供目录检索与阅览服务;学校可以允许采用影印、 缩印、数字化或其它复制手段保存学位论文;在不以赢利为目的的前提下, 学校可以公开学位论文的部分或全部内容。( 保密论文在解密后遵守此规 定) 日期:2 9 c ;- 2 譬 日期:伽严0 罢 r y ,使蜒孙 彪潞 。y 签 名 师 签 教 者 导 作 指 第一章引言 1 1 选题背景 第一章引言 基于互联网的w e b 应用如火如荼,迅速发展,各类网站数量也呈井喷式增长,随 之而来的,是日益突出的安全问题。不断被发现的漏洞,黑客的恶意攻击,在网络上疯 狂爬行的蠕虫,迅速扩散的病毒,盗取虚拟财物的木马。据c n c e r t 统计,与2 0 0 6 年 相比,2 0 0 7 网页恶意代码事件数量由3 2 0 件增加至1 1 5 1 件,增长率近2 6 倍【1 1 ,2 0 0 8 年仅7 月一个月,中国被篡改网站数量就已经达到了5 6 4 7 件【2 1 。w e b 安全威胁已经进 入快速发展阶段。w e b 的攻击手段也同新月异,如x s s 跨站攻击、网站s q l 注入,导 致网页被篡改、网站被查封。有些攻击手段甚至使w e b 成为传播木马给浏览网站用户 的一个载体。 w e b 安全的层次一般划分为三个层次: 1 、网络安全。如防火墙、路由器、网络结构等相关的安全问题; 2 、系统与服务安全。如w i n d o w l i n u x u n i x 系统本身的漏洞或运行于其上的服务 的安全; 3 、w e b 应用程序安全。具体应用程序的安全性漏洞,比如:某网站邮件系统因为 存在脚本安全性问题,导致该邮件系统的用户在收到具有恶意代码的邮件时不知不觉 的,其密码与帐号信息被人窃取。 近年来,基于微软的a s p n e t 架构的w e b 应用稳步上升,市场占有率很高,但安 全问题也最为突出。本文讨论的安全隐患指的是w e b 应用程序的安全,研究对象包括 服务器、数据库、编程语言和客户端。本文拟从分析基于a s p n e t 架构的w e b 应用程 序安全问题入手,对常见的安全性问题,提出较为可行的解决方案。 1 2a s p n e t 架构的w e b 应用技术背景 a s e n e t 是微软推出的新一代w e b 开发平台,与其它w e b 开发技术相比,a s p n e t 提供的w e b 页面级状态管理功能、服务器控件触发事件的工作模式、代码和内容分离 的编程方式等【3 l ,在一定程度上改变了以往的w e b 应用系统的架构模式。在软件开发技 湖北人孝硕士学位论文 术方面,面向对象技术和软件分层结构设计是代码组织的一些好方法。但是对于具体的 开发平台而占,多层结构有着不同的具体表现:对于具体的项目开发而言,面向对象技 术对具体问题进行类定义和对象划分也不尽相同。图1 - 1 是项目中基于a s e n e t 平台的 w e b 应用的多层架构: 图1 1a s e n e t 多层架构图 在a s e n e t 多层架构框架下,w e b 服务包含了表示层( p r e s e n t a t i o nl a y e r ) ,业务逻 辑层( b u s i n e s sl o g i cl e v e l ) f f z 数据访( n j 昙( d a t a a c c e s sl a y e r ) 。通过表示层提供用户界面, 然后用户界面与【k 务逻辑层交互。表示层提供了客户访问w e b 应用程序的接口,该层 由如下部件构成:w e b 窗体( w e bf o r m ) 、母模版( m a s t e rp a g e ) 、皮肤( s k i n ) 、容器 ( c o n t a i n e r s ) 、模块用户控件( m o d u i eu s e rc o n t r o l s ) 、客户端脚本( c l i e n t s i d es c r i p t s ) 。业 务逻辑层为门户的所有核心应用提供业务逻辑。该层包含了诸如缓存机制、异常管理、 事件日志、成员角色及外观等诸多核心服务和模块。业务逻辑层还可以包含了自定义业 务对象( c u s t o mb u s i n e s so b j e c t ) 。数据访问层为业务逻辑层提供数据服务,它使数据能 在数据库中流入、流出。 1 3 国内外研究现状 随着应用业务的w e b 化进程日渐深入,针对w e b 业务的攻击增长迅,利用s q l 注 入等攻击手段而对网站进行网页篡改、窃取数据等安全事件频频发生。 根据5 1 c t oc o m 的调查【4 】,甘前,总体w e b 安全风险等级中高风险的占到了6 0 以上。目前w e b 血用程序安全已不仅仪与系统服务及网络安全有很大关系,而更重要 第一章引言 的是w e b 应用程序自身的安全,诸如跨站脚本攻击( c s so rx s s ,c r o s ss i t es c r i p t i n g ) 和 s q l 注入攻击( s q li n j e c t i o n ) 屡见不鲜,2 0 0 8 年1 月初,财富5 0 0 强公司、政府机构以 及教育机构的数千个网页遭到了多次大规模的s q l 注入式攻击。而这些攻击点的发起 正是由于w e b 应用程序存在着自身问题所致。另一方面,作为开发者而言,往往只关 心w e b 程序功能的实现而忽略了安全隐患。正确的开发习惯及良好的安全意识能最大 限度的保证w e b 程序开发的安全性,安全必须要求开发者从自身做起,但目前,对w e b 应用程序安全问题大多数的开发者还没有关注,无力提出较为成熟的解决方案。 根据世界上最知名的w e b 安全与数据库安全研究组织o w a s p ( o p e nw e b a p p l i c a t i o ns e c u r i t ya r o j e c t ) 提供的报告,目前对w e b 业务系统威胁最严重的两种攻击 方式是s q l 注入攻击和跨站脚本攻击。攻击者s q l 注入成功后,会拥有整个系统的最 高权限,可以修改页面、数据,在网页中添加恶意代码,还可以通过查看数据库获得所 有关键数据信息,危害极大。跨站脚本攻击是向w e b 发布系统提交恶意脚本,当访问 者浏览受攻击的网页时恶意脚本会被执行,从而泄露用户的密码等敏感信息,如果访问 者是管理员,则w e b 系统的管理员权限将有可能泄露,使得攻击者可以控制整个网站, 其威胁程度更大、威胁波及面更广。 对于这两种攻击手段,利用传统基于攻击特征匹配的方法进行检测收效甚微,存在 大量的漏报和误报。本文拟从分析基于a s p n e t 架构的w e b 应用程序安全问题入手, 对常见的安全性问题进行研究,并提出较为可行的解决方案。 1 4 论文结构安排 论文共分五章。 第一章引言。介绍选题背景、基于a s e n e t 架构的w e b 应用技术背景和w e b 应 用安全国内外研究现状。 第二章w e b 应用程序安全威胁概述。介绍开放式w e b 应用程序安全项目要素,重 点分析了项目中安全危害等级比较高的三类安全威胁。并介绍了a s r n e t 安全性基本 原理。 第三章w e b 应用程序技术框架。主要介绍了项目中容易引发安全问题的几项关键 技术。 第四章构建安全的w e b 应用程序。首先介绍w e b 应用程序面临的安全威胁,然后 结合项目实践,提出在w e b 应用中处理输入验证和异常处理。本章还研究了身份认证 3 湖北人学硕十学位论文 与授权,实现了基于角色的f o r m s 身份认证与u s b k e y 认证结合的统一身份认证系统。 实现了使用带有s a l t 的哈希值对敏感数据加密的算法。最后提出了处理x s s ,s q l 注入 及h t r p 响应拆分三类危险等级较高的安全问题。 第五章结论与展望。总结论文研究成果、存在的问题及进一步研究的方向。 4 第二章w e b 应用程序安全威胁概述 第二章w e b 应用程序安全威胁概述 2 1w e b 应用程序安全项目要素 随着w e b 应用程序的增多,随之而来的就是这些w e b 应用程序所带来的安全漏洞。 不遵从规范化的编码指导,会使企业、员工以及企业的客户面对严重的安全风险,甚至 遭到各种恶意攻击。 而不同的安全问题对应用程序的影响程度是不同的。比如一个已被公开的安全问 题,在应用程序中仍然没有修复的话,那么应用程序就会给攻击者敞开大门。安全威胁 和影响程度可以使用户确认那些安全隐患在系统中的优先级,从而在应用程序安全保卫 战中做到“有的放矢”,及时修补重大问题。如果系统管理员面对若干个不知其严重等级 的安全问题,往往会导致对它们没有足够的重视,或不了解它们的危害程度而置之不理。 随着存在安全隐患的w e b 应用程序数量的增长,o w a s p ( o p e nw e ba p p l i c a t i o ns e c u r i t y p r o j e c t ) 总结出了w e b 应用程序的十大脆弱点。在这个1 0 要素列表中,不但包括了w e b 应用程序的脆弱性介绍,还包括了o w a s p 的建议内容,帮助程序开发人员和企业尽量 避免这些脆弱点给企业系统带来的风险。这些项目也同样可以应用于a s p n e t 应用程 序。以下列表来自o w a s p1 0 要素项目:( o w a s p ,2 0 0 7 ) 【5 】: 1 跨站脚本( x s s ) ;2 注入错误;3 远程文件包含不安全( 新增) ;4 直接对 象参考不安全;5 跨站请求仿造( c s r f ) ;6 信息泄露和错误处理不当;7 认证和 会话管理不完善;8 加密存储不安全;9 通信不安全;1 0 无法限制u r l 访问。 项目中使用f o t i f y 和a p p s c a n 两款安全漏洞扫描工具对项目源码进行了安全测试, 两种测试结果基本一致。分析f o t i f y 的测试结果可以看出,安全等级为底、中和高的漏 洞个数分别为1 1 6 7 、4 2 9 和3 6 5 个。忽略测试软件的错报和误报问题,下面着重分析威 胁等级较高漏洞。威胁等级为最高的漏洞包含2 9 9 个跨站脚本漏洞,6 1 个h t t pr e s p o n s e s p l i t t i n g ( h 1 r r r p 响应拆分或h 丌p 响应头截断) 1 6 】漏洞,5 个s q l 注入漏洞。从测试结 果可以看出,与o w a s p 发布的排名前十项安全漏洞基本一致。下面重点分析这三类严 重性等级比较高的安全问题。 2 1 1c r o s ss i t es c r i p t i n g ( x s s ) 跨站点脚本攻击 x s s 指的是恶意攻击者往w e b 页面旱插入恶意h t m l 代码,当用户浏览该页之时, 5 湖北大学硕士学位论文 嵌入其中w e b 里面的h t m l 代码会被执行,从而达到恶意用户的特殊目的。x s s 属于 被动式的攻击,因为其被动且不好利用,所以其危害性没有得到应有的重视nx s s 漏 洞在以下情况下发生: 1 数据通过一个不可信赖的资源进入w e b 应用程序,通常是一个网页请求或者 数据库。 2 在未检验包含数据的动态内容是否存在恶意代码的情况下,便将其传送给了w e b 用户。传送到w e b 浏览器的恶意内容通常采用j a v a s c d p t 代码片段的形式,但也可能会 包古一。些h t m l 、f l a s h 或者其它任意一种可以被浏览器执行的代码。 基于x s s 的攻击手段花样百出,几乎是无穷无尽的。一般的跨站脚本攻击包含两 个步骤:首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本然后利用 不安全的a c t i v e x 控件执行恶意的行为。通常在安静模式让计算机浏览攻击者指定的脚 页悄悄下载安装各种恶意代码,如问谍软件、木马软件、蠕虫等。x s s 通常它们都会包 含传输给攻击者的私人数据( 如c o o k i e 或者其它会话信息) 。在攻击者的控制下,指引 受害者进入恶意的网络内容:或者利用易受攻击的站点,对用户的机器进行其它恶意操 作。 图2 - 1 是跨站脚本攻击的示意图。首先,用户点击了黑客发来的电子邮件中的一个 嵌入的链接。这样会导致用户的浏览器向w e b 站点发送一个请求;服务器端根据该请 求会生成一个包含恶意脚本的响应,井将其发回给用户的浏览器。 第二章w e b 应用程序安全威胁概述 当用户的机器执行返回的恶意代码时,就会将用户的敏感数据发送给黑客的计算 机。整个过程用户只单击了一个链接,然后就会有指令发送给w e b 服务器,然后w e b 服务器生成一个嵌入恶意脚本的网页;浏览器运行这个来自受信任的源的脚本,却致使 信息泄漏给黑客的计算机。跨站点脚本攻击有许多不同的形式,这里只是其中的一种。 下面举例说明x s s 攻击原理。 x s s 攻击例1 :下面的a s p n e t 代码片段会在一个h 1 阿请求中读取一个学生i d , 并显示给用户。 s t u d e n t i d t e x t = l o g i n t e x t ; ( h t m l 如下) 如果l 0 9 i n 只包含标准的字母或数字文本,这个例子中的代码就能正确运行。如果絮 l o 舀n 有一个包含元字符或源代码的值,那么w e b 浏览器就会像显示h 1 曙响应那样执 行代码。 在早期,这个例子似乎是不会轻易遭受攻击的,因为没有人会输入导致恶意代码的 u r l ,并且还在自己的电脑上运行! 但真j 下的危险在于,攻击者会创建恶意的u r l ,然 后使用电子邮件或者其他诡计诱使受害者点击这个链接。当受害者点击这个链接时,就 会不知不觉地通过易受攻击的w e b 应用程序,使自己的电脑蒙受恶意内容带来的风险。 例如,当攻击者给出一个看似很正常的广告链接:“h t t p :1 w w w q q c o m ”,但这个链接实 际的地址却是“h t t p :w w w h a c k e r c o m d e f a u l t a s p x 2 2 0 n m o u s e o v e r = 2 2 x = a l :x = x + 1 e r t ( 警告2 0 您有x s s 攻击2 0 漏洞2 0 请尽快修复! ) ;e v a l ( x ) ;a l e r t ( 危险x s s 漏 洞) a s p x ”,当用户点击该链接的时候,会跳转到攻击页面,并执行相应的攻击脚本。这 种对易受攻击的w e b 应用程序进行盗取的机制通常被称为反射式x s s 。 x s s 攻击例2 :下面的a s p n e t 代码片段会根据一个给定的学生i d 来查询数据库, 并显示出该学生的相应姓名。 s t r i n gq u e r y2 ”s e l e c t 宰f r o mt _ s t u d e n t sw h e r ei d = ”+ s i d ; s d a = n e w s q l d a t a a d a p t e r ( q u e r y , c o n n ) ; s d a f i l l ( d t ) ; 7 湖北大学硕十学位论文 s t r i n gn a m e = d t r o w s o i l ”n a m e ”1 ; s t u d e n t n a m e t e x t = n a m e ; ( h t m l 如下) 如同例1 ,如果对n a m e 的值处理得当,该代码就能正常地执行各种功能;如若处 理不当,就会对代码的盗取行为无能为力。同样,这段代码暴露出的危险较小,因为n a m e 的值是从数据库中读取的,而且显然这些内容是由应用程序管理的。然而,如果n a m e 的值是由用户提供的数据产生,数据库就会成为恶意内容沟通的通道。如果不对储存于 数据库中的所有数据进行恰当的输入确认,那么攻击者便能在用户的w e b 浏览器中执 行恶意命令。这种类型的盗取( 称作s t o r e dx s s ) 极其阴险狡猾,由于数据存储的间接 性,使得辨别威胁的难度增大,而且还提高了一个攻击影响多个用户的可能性。x s s 盗 取会从植入x s s 脚本的网站开始。攻击者会在这些页面中嵌入j a v a s c r i p t ,接下来所有 访问该页面的用户都会执行这些恶意代码。 正如例子中所显示的,x s s 漏洞是由于h r r p 响应中包含了未经验证的数据代码而 引起的。受害者遭受x s s 攻击的途径有三种: 1 如例1 所述,系统从h 1 瞪请求中直接读取数据,并在h t r p 响应中返回数据。 当攻击者诱使用户为易受攻击的w e b 应用程序提供危险内容,而这些危险内容随后会 反馈给用户并在w e b 浏览器中执行,就会发生反射式x s s 盗取。发送恶意内容最常用 的方法是,把恶意内容作为一个参数包含在公开发表的u r l 中,或者通过电子邮件直 接发送给受害者。以这种手段构造的u r l 构成了多种“网络钓鱼”( p h i s h i n g ) 绸谋的核心, 攻击者借此诱骗受害者访问指向易受攻击站点的u r l 。站点将攻击者的内容反馈给受害 者以后,便会执行这些内容,接下来会把用户计算机中的各种私有信息( 比如包含会话 信息的c o o k i e ) 传送给攻击者,或者执行其它恶意活动。 2 如例2 所述,应用程序将危险数据储存在一个数据库或其它可信赖的数据存储 器中。这些危险数据随后会被回写到应用程序中,并包含在动态内容中。s t o r e d x s s 盗 取发生在如下情况:攻击者将危险内容注入到数据存储器中,且该存储器之后会被读取 并包含在动态内容中。从攻击者的角度看,注入恶意内容的最佳位置莫过于一个面向许 多用户,尤其是相关用户显示的区域。相关用户通常在应用程序中具备较高的特权,或 8 第二章w e b 应用程序安全威胁概述 相互之间交换敏感数据,这些数据对攻击者来说有利用价值。如果某一个用户执行了恶 意内容,攻击者就有可能以该用户的名义执行某些需要特权的操作,或者获得该用户个 人所有的敏感数据的访问权限。 3 应用程序以外的源代码会在数据库或其他数据存储器中储存危险数据,这些危 险数据随后会被应用程序当作可信赖的数据读取并包含在动态内容之中。 2 1 2s q l 注入( s q l i n j e c t i o n ) 攻击 利用现有应用程序的漏洞,将恶意的s q l 命令注入到后台数据库引擎执行的攻击 即s o l 注入攻击。如果没有成功的阻止带有语法含义的输入内容,有可能导致对数据 库信息的非法访问。比如在w e b 表单中输入的内容,应该保持简单,并且不应该还有 可被执行的代码内容。注入漏洞最典型的就是s q l 注入( s o l i n j e c t i o n ) 【8 】。s q l 注入 就是通过把s q l 命令插入到w e b 表单提交、页面请求、c o o k i e 验证的查询字符串,最 终达到欺骗服务器执行恶意的s o l 命令。s q l 注入是针对服务端数据库的一种注入技寥 术。随着b s 模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。 但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程 序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全 隐患,使得用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得 知的数据。 s q l 注入通过用户输入构造一个动态s q l 指令,攻击者就能够修改指令的含义或 者执行任意的s q l 命令。s o l 注入是从正常的h 订p 端口访问,而且表面看起来跟一 般的w e b 页面访问没什么区别,所以目前防火墙不会对s q l 注入发出警报,如果管理 员没查看i i s 同志的习惯,可能被入侵很长时间都不会发觉。 s q l i n j e c t i o n 错误在以下情况下发生f 9 】: 1 数据从一个不可信赖的数据源进入程序。 在这种情况下,无法确定该字符串是否始终可以信赖。 2 数据用于动态地构造一个s q l 查询。 s q l 注入例1 :以下代码动态地构造并执行了一个s o l 查询,该查询可以搜索与指 定名称相匹配的项。该查询仅会显示条目所有者与被授予权限的当前用户一致的条目。 s t r i n gu s e r n a m e = t h i s u s e r i d e n t i t y n a m e ; 9 湖北人学硕十学位论文 s t r i n gq u e r y = ”s e l e c t 木f r o mt s t u d e n t sw h e r e u s e r n a m e = + u s e r n a m e + ”a n dt e a r c h e r n a m e = + t e a r c h e r n a m e t e x t + ”; s d a = n e ws q l d a t a a d a p t e r ( q u e r y , c o n n ) ; d a t a t a b l ed t = n e wd a t a t a b l e 0 ; s d a f i l l ( d t ) ; 这一代码所执行的查询遵循如下方式: s e l e c t 木f r o mts t u d e n t s w h e r e u s e r n a m e = u s e r n a m e a n dt e a r c h e r n a m e = t e a r c h e r n a m e ; 但是,由于这个查询是动态构造的,由用户输入字符串连接而成,因此只有在 t e a r c h e r n a m e 不包含单引号字符时,才会正确执行这一查询。如果一个用户名为m i c h a e l 的攻击者在t e a r c h e r n a m e 中输入字符串“c h b o r a t = ”a ,那么构造的查询就会变成: s e l e c t 母f r o mts t u d e n t s w h e r eu s e r n a m e = m i c h a e l a n dt e a r c h e r n a m e = c h b o r a t = “a ; 附加条件o r a w = a 会使w h e r e 从句永远为t r u e ,因此该查询在逻辑上将等同于一个 更为简化的查询: s e l e c t 书f r o m t _ s t u d e n t s ; 这种查询的简化会使攻击者绕过查询只返回条目所有者与被授予权限的当前用户 一致的要求;而现在的查询则会直接返回所有储存在ts t u d e n t s 表中的条目,不论它们 的所有者是谁。 同样的s q l 注入在l i n qt os q l 中也同样存在。有问题的l i n q 代码如下: s t r i n gu s e r n a m e = t h i s u s e r i d e n t i t y n a m e ; s t r i n gq u e r y = ”s e l e c t 木f r o mt s t u d e n t sw h e r e u s e r n a m e = 川 + u s e r n a m e + ”a n dt e a r c h e r n a m e = + t e a r c h e r n a m e t e x t + ”; v a rr e s u l t s = d a t a c o n t e x t e x e c u t e c o m m a n d ( q u e r y ) ; 1 0 第二章w e b 应用程序安全威胁概述 s q l 注入例2 :本例指出了例1 中构造和执行的查询给不同的恶意数值带来的影响。 如果用户名为m i c h a e l 的攻击者在t e a r c h e r n a m e 中输入字符串“c h b ) ;d e l e t ef r o m t _ s t u d e n t s ;- - ,这样,查询将会变成以下两个: s e l e c t 宰f r o mt s t u d e n t s w h e r eu s e r n a m e = m i c h a e l a n d t e a r c h e r n a m e = c h b ; d e l e t ef r o mt _ s t u d e n t s ; 众多数据库服务器,其中包括m i c r o s o f t ( r ) s q ls e r v e r2 0 0 0 2 0 0 5 2 0 0 8 ,都可以一 次性执行多条用分号分隔的s q l 指令。对于那些不允许运行用分号分隔的批量s q l 指 令的数据库服务器,比如o r a c l e 和其他数据库服务器,攻击者输入的这个字符串只会导 致错误;但是在那些支持这种操作的数据库服务器上,攻击者可能会通过执行多条s q l 而在数据库上执行任意s q l 指令。+ 注意成对的连字符( 一) ;这在大多数数据库服务器上都表示下面的语句将作为注释 使用,而不能加以执行。在这种情况下,注释字符的作用就是删除修改的查询指令中遗 留的最后一个单引号。而在那些不允许这样加注注释的数据库中,通常攻击者可以如例 1 那样来攻击。如果攻击者输入字符串“c h b ) ;d e l e t ef r o mt _ s t u d e n t s ;s e l e c t 宰 f r o mts t u d e n t sw h e r e a v = ”a 就会创建如下三个有效的s q l 指令: , s e l e c t 书f r o m t s t u d e n t s w h e r eu s e m a m e = 7 m i c h a e l a n dt e a r c h e r n a m e = c h b ; d e l e t ef r o mt _ s t u d e n t s ; s e l e c t 宰f r o mt s t u d e n t sw h e r e a = a 。; 显然构建的s q l 语句会删除t _ s t u d e n t s 表中的所有数据。当然,攻击者可能不仅是 蓄意的以破坏为目的,很可能还有其它的目的,不如查看数据库中的机密数据等。这样, 通过s o l 注入,攻击者的危害会不断扩大,给w e b 应用程序造成的后果将不堪设想。 2 1 3h 1 曙响应拆分( h t r p r e s p o n s es p l i t t i n g ) 攻击 h t t p 响应拆分是c r l fi n j e c t i o n 的一种。造成h t r p 响应拆分漏洞的主要原因是 对用户提交的非法字符没有进行严格的过滤,尤其是c r ( 回车,由0 d 或x r 指定) , 湖北大学硕十学位论文 l f ( 换行,由o a 或n 指定) 字符的输入。攻击者通过发送一经过精心构造的r e q u e s t , 迫使服务器认为其返回的数据是两个响应,而不是常规的一个响应。当可以通过精心制 作的r e q u e s t 完全控制第二个响应时,可以通过这样来实现攻击。h t t p 响应头文件中 包含未经验证的数据还会引发c a c h e - p o i s o n i n g 、c r o s s s i t es c r i p t i n g 、c r o s s - u s e rd e f a c e m e n t 或p a g eh i j a c k i n g 等攻击。下面两种情况中会出现h 1 1 t 响应拆分漏洞: 1 数据通过一个不可信赖的数据源进入w e b 应用程序,最常见的是h t r p 请求。 2 数据包含在一个h t t p 响应头文件里,未验证是否存在恶意字符就传送给了 w e b 用户。 从本质上看,这些漏洞是显而易见的:一个攻击者将恶意数据传送到易受攻击的应 用程序,且该应用程序将数据包含在h t t p 响应头文件中。成功地实施攻击需要应用程 序允许将那些包含c r 和l f 的字符输入到头文件中。攻击者利用这些字符不仅可以控 制应用程序要发送的响应剩余头文件和正文,还可以创建完全受其控制的其它响应。下 列代码片段会从h 1 曙请求中读取网络同志项的u s e r ,并在一个h 1 限响应的c o o k i e 头文件中设置。 s t r i n gu s e r = u s e r t e x t ; c o o k i ec o o k i e = n e wc o o k i e ( ”u s e r ”u s e 0 ; 假设在请求中提交了一个字符串,该字符串由标准的字母数字字符组成,如”c u i h a i b o ”,那么包含该c o o k i e 的h ”曙响应可能表现为以下形式: h t l 甲1 12 0 0o k s e t c o o k i e :u s e r = c u ih a i b o 然而,如果c o o k i e 的值是根据未经验证的用户输入形成的,所以只有当传递给 u s e r t e x t 的值不包含任何c r 和l f 字符时,响应才会保留这种形式。如果攻击者提 交的是一个恶意字符串,比如s o m e b o d y 衄h 删1 12 0 0o k 衄”,那么h 1 r r r p 响应 就会被分割成以下形式的两个响应: h t r p 1 12 0 0o k 1 2 第二章w e b 应用程序安全威胁概述 s e t - c o o k i e :u s c r = s o m e b o d y h t t 甲1 12 0 0o k 显然,第二个响应已完全由攻击者控制,攻击者可以用所需的头文件和正文内容构 建该响应。攻击者可以构建任意的h 丌p 响应,从而发起多种形式的攻击,包括: c r o s s u s e rd e f a c e m e n t 、c a c h ep o i s o n i n g 、c r o s s s i t es c r i p t i n g 和p a g eh i j a c k i n g 。 2 2a s p n e t 安全性基本原理 对于w e b 开发人员来说,保证网站的安全不仅是确保网站不受x s s 及s q l 注入等 的威胁是一个关键而又复杂的问题。保护某个站点需要进行仔细地规划,网站管理员和 程序员都必须清楚地了解保证站点安全的选项。最基本的是需要身份认证与授权。下面 讨论a s e n e tw e b 应用程序的安全结构及身份验证。 2 2 1a s p n e t 中安全结构 微软公司建议a s p n e t 中安全系统之间的关系如下图2 2 所示: w e b f f ,。壤, : 脚雌脯饼i - q 删黧粤撕。n jl 1 n e t f r a m w o r k : , r w i n d t 柳ss c r v 盯:;系镪臻们系统 图2 2a s p n e t 结构1 1 0 1 如图所示,所有w e b 客户端都必须通过m i c r o s o f ti n t e r n e t 信息服务( 1 l s ) 与a s e n e t 应用程序或者操作系统通信。i i s 根据需要对请求进行身份验证,然后找到请求的资源 ( 如a s p n e t 应用程序) 。只有经过授权的客户端才能访问请求的资源。 当运行a s e n e t 应用程序时,它不仅可以使用内置的a s p n e t 安全功能。还可以 使用n e tf r a m e w o r k 的安全功能。除了依赖i i s 的身份验证功能,还可以在a s p n e t 1 3 湖北人学硕十学位论文 中执行身份验证。由此可见,a s e n e t 与m i c r o s o f t n e tf r a m e w o r k 及i i s 协同工作以 提供w e b 应用程序安全性。 保护a s e n e t 应用程序的安全,应该执行两个基本功能:身份验证与授权。身份 验证帮助验证用户不是假冒的。应用程序获取用户的凭据( 各种形式的标识,如用户名 和密码) 并通过某些授权机构验证那些凭据。如果这些凭据有效,则将提交这些凭据的 实体视为通过身份验证。授权通过对已验证身份授予或拒绝特定权限来限制访问
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年幼儿园谚语公开课课件
- 2026年幼儿园比尾巴公开课课件
- 2026年福建省晋江市高二生物下册期末考试考试卷标准卷附答案
- 2026年江苏省句容市高二生物下册期末考试测试卷及答案(典优)
- 2026年福建省福安市高二生物下册期末考试测试卷含答案(突破训练)
- 2026年江苏省太仓市高二生物下册期末考试测试卷(基础题)附答案
- 2026年山东省胶州市高二生物下册期末考试模拟卷【突破训练】附答案
- 企业技术创新推进方案
- 企业环境管理环节方案
- 2026年湖北省麻城市高二生物下册期末考试检测卷含完整答案(易错题)
- 2026年广东省汕头市潮南区中考一模英语(含详细答案解析)
- 建筑防水维修用快速堵漏材料验收方案
- 2026年安全生产月:非煤矿山爆破作业安全管理课件
- 13 任何可能的紧急情况的处理措施、预案以及抵抗风险包括工程施工过程中可能遇到
- 中国成人患者肠外肠内营养临床应用指南(2026版)
- 2025年交通运输概论考试试题及答案
- 五下道法 全册必背120个考点26春
- 天津中考:历史高频考点总结
- 2026年地铁站务员面试常见问题
- 2026苏教版(新教材)小学科学二年级下册《探秘玩具》单元综合测试卷及答案(2套)
- 2026年中央安全生产考核巡查明查暗访清单
评论
0/150
提交评论