




已阅读5页,还剩48页未读, 继续免费阅读
(计算机应用技术专业论文)xml安全性研究及在web+service中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
r e s e a r c ha n d a p p l i c a t i o no fx m ls e c u r i t yi n 。腑bs e r v i c e at h e s i ss u b m i t t e df o rt h ed e g r e eo fm a s t e r c a n d i d a t e :h u j u n s u p e r v i s o r :p r o f w a n gs h i h u i h u b e iu n i v e r s i t y w u h a n ,c h i n a 湖北大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任 何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的 法律后果由本人承担。 论文作者签名:铂段 日期: 沙p 年6 月弓日 学位论文使用授权说明 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即: 按照学校要求提交学位论文的印刷本和电子版本;学校有权保存并向 国家有关部门或机构送交论文的复印件和电子版,并提供目录检索与阅览 服务;学校可以允许采用影印、缩印、数字化或其它复制手段保存学位论 文;在不以赢利为目的的前提下,学校可以公开学位论文的部分或全部内 容。( 保密论文在解密后遵守此规定) 作者签名: 钥5 灸 舯挪签名咖伞 日期:劢f o 6 弓 日期:少虮6 哆 摘要 x m l 的诞生,推动了互联网技术的发展,也推动了软件技术的发展。但是任何一种 新技术的诞生,就又会增加一种新的安全问题,这是不容质疑的。因为任何的技术都没 有绝对的安全,安全只是相对而言的。目前的计算机技术就是把安全工作做在前面,满 足现实技术和应用的需要,安全技术也是随着技术的发展而进步的。由于x m l 技术的诞 生,以至于很多传统的技术都已经在发生着改变,因此也就把越来越多的安全问题暴漏 出来。所以在关注x m l 自身安全问题的同时,同样要关注当x m l 与其它技术结合时的 安全性,以及x m l 安全发现机制。 本人在研究生的学习工作工程中,充分接触到了x m l 的使用和安全性,对x m l 的 安全性有一个比较系统的认识,另外,在n e t2 0 数据库开发和源代码检测平台的开发 过程中,也在这方面做过工作,因此对x m l 的安全性做一个比较全面的探讨及改进。 本文将由当今x m l 技术的完全漏洞事件入手,对漏洞事件进行简单的分析,然后结 合发展现状,追溯x m l 发展历史及发展原因,对x m l 技术进行总体清晰的阐述,包括 x m l 的定义、标准,以及x m l 与其它技术结合的使用方法,进而分析x m l 安全问题产 生的原因。然后阐述x m l 安全的相关基本理论知识及安全使用x m l 的实现方法。并结 合目前主流s o a 技术,详细阐述蹦l 在s o a 中的安全应用框架的实现。最后,对x m l 安全性问题提出自己的一些建议和解决办法,对未来x m l 的发展方向和安全问题提出一 些预期的展望。 关键词:x m l 安全性;w c bs e r v i c e ;s o a p ;数字签名;加密解密 a b s t r a c t t h eb i r t ho fx m la n dp r o m o t e dt h ed e v e l o p m e n to fi n t e m e tt e c h n o l o g y , a l s oc o n t r i b u t e dt ot h ed e v e l o p m e n to fs o f t w a r et e c h n o l o g y b u tt h eb i r t ho f a n y n e wt e c h n o l o g y , i tw i l la d dan e ws e c u r i t yi s s u e s ,w h i c hc a nn o tb eq u e s t i o n e d b e c a u s ea n yo ft h et e c h n o l o g i e sa r en oa b s o l u t es e c u r i t y , s e c u r i t yi sr e l a t i v e c u r r e n tc o m p u t e rt e c h n o l o g yi st os e c u r ea jo bi nf r o n to fr e a l i t yt e c h n o l o g ya n d a p p l i c a t i o n s t om e e tt h en e e d so fs e c u r i t y t e c h n o l o g yi s a st e c h n o l o g y d e v e l o p m e n ta n dp r o g r e s s i nm yp o s t g r a d u a t es t u d ya n dw o r kp r o j e c t s ,f u l la c c e s st ot h ex m l ,u s e a n ds e c u r i t yo ft h ex m l s e c u r i t yam o r es y s t e m a t i cu n d e r s t a n d i n go ft h eo t h e r , i nt h e n e t2 0d a t a b a s ed e v e l o p m e n ta n ds o u r c ec o d et e s t i n gp l a t f o r mf o rt h e d e v e l o p m e n tp r o c e s s ,b u ta l s ow o r kd o n ei nt h i sa r e a ,s ot h ex m ls e c u r i t yt o m a k eam o r e c o m p r e h e n s i v es t u d ya n di m p r o v e m e n t t h i sw i l lb et h ec o m p l e t ev u l n e r a b i l i t yo ft o d a y sx m l t e c h n o l o g ye v e n t s s t a r tw i t has i m p l ec a s eo ft h ev u l n e r a b i l i t ya n a l y s i s ,a n dt h e nc o m b i n e dw i t ht h e d e v e l o p m e n ts t a t u s ,t r a c et h eh i s t o r ya n dd e v e l o p m e n to fx m l b e c a u s eo fx m l t e c h n o l o g yf o rt h eo v e r a l lw e l lp r e s e n t e d , i n c l u d i n gt h ex m ld e f i n i t i o n s , s t a n d a r d s ,a n do t h e rt e c h n o l o g i e st ou s e ,a n dt h e na n a l y z e st h ec a u s e so fx m l s e c u r i t y t h e ne x p l a i nt h eb a s i ct h e o r yo fx m ls e c u r i t y - r e l a t e dk n o w l e d g ea n d s a f eu s eo fx m li nt h ei m p l e m e n t a t i o nm e t h o d c o m b i n e dw i t ht h ec u r r e n t m a i n s t r e a ms o a t e c h n o l o g y , s o ai nd e t a i lt h es e c u r i t yo fx m la p p l i c a t i o n si n t h ef r a m e w o r ko fi m p l e m e n t a t i o n f i n a l l y , x m ls e c u r i t yi s s u e sp u tf o r w a r d l i s o m es u g g e s t i o n sa n ds o l u t i o n sf o rt h ef u t u r ed i r e c t i o no fx m l ,a n ds e c u r i t y i s s u e ss o m eo ft h ee x p e c t e do u t l o o k k e yw o r d s :x m ls e c u r i t y ;w e bs e r v i c e ;s o a p :d i g i t a ls i g n a t u r e ; e n c r y p t ; i i i 目录 第一章引言1 1 1 本论文的选题背景1 1 2 本论文的研究内容和主要方法1 1 3 本论文组织结构2 第二章x m l 的安全漏洞事件浅析3 2 1 概述3 2 2x m l 漏洞事件一:i e 7 0 漏洞事件3 2 3x m l 漏洞事件二:a d o b eb l a z e d sx m l 和x m l 外部实体注入漏洞4 第三章讧l 发展由来及基本体系结构5 3 1x m l 发展由来和发展历史5 3 1 1x m l 出现的原因。5 3 1 2x m l 发展历史。5 3 2x m l 应用现状。6 3 3x m l 基础7 第四章x m l 的基本安全性问题1 4 4 1 弓i 言1 z l 4 2x m l 解析安全问题1 4 4 3x m l 作为本地微型数据库的安全性1 6 4 3 1 本地安全1 6 4 3 2 x m l 推理控制技术1 7 4 3 3 客体重用安全机制2 0 4 4x m l 作为配置文件的安全性2 0 4 4 1 模式校验2 0 4 4 2 预读取控制2 2 4 4 3 操作系统本地备份x m l 配置文件2 3 4 5x m l 漏洞相关2 3 4 。s 1x m l 相关缺陷分类。2 3 4 5 1x m l 相关缺陷漏洞的检测2 3 第五章x m l 在w e bs e r v i c e 中交换安全基础2 4 5 1w e bs e r v i c e 与x m l 应用介绍2 4 5 2s o a p 简介2 s 5 4x m l 在w e bs e r v i c e 中面临的基本安全问题2 6 5 5x m l 安全应用的重要基础:p k i 2 7 第六章x m l 在w e bs e r v i c e 中安全层的实现2 9 6 1 生成密钥2 9 6 1 1 生成密钥对2 9 6 1 2 生成共享密钥3 0 6 2 w e bs e r v i c e 中x m l 加密解密3 1 6 2 1 x m l 加密总体描述3 2 6 2 2 x m l 加密3 2 6 2 3 x m l 解密3 3 6 3x m l 数字签名3 3 6 3 1x m l 签名总体描述3 4 6 3 2x m l 签名过程3 4 第七章总结和展望3 6 7 1 本文主要总结。3 6 7 2 未来研究方向展望。3 6 参考文献。3 8 攻读研究生期间所发表论文及参加项目。4 0 致谢4 1 v 第一章引言 1 1 本论文的选题背景 第一章引言 x m l 作为- - f l 新的技术,伴随着互联网及信息化的发展,已经深入到了计算机技 术的各个角落,特别是与w e b 2 0 的结合,使其在当今互联网技术领域占有很重要的地 位及重要的意思。x m l ( e x t e n s i b l em a r k u pl a n g u a g e ) 可扩展标记语言是s g m l ( s t a n d a r d g e n a r a lm a r k u pl a n g u a g e ) 标准通用标记语言的一个子集,由w 3 c 制定,并于1 9 9 8 年 2 月正式推出x m l l 0 版本。目前,x m l 已经被作为数据源,配置文件,信息交换载体 应用了w e bs e r v i c e 、s o a 、x m l 数据库等众多技术当中。同时也被微软、m 等公 司应用到了众多产品当中。伴随着应用的广泛性,x m l 的安全问题已经开始凸现,因 此x m l 使用安全性也成为一个重要的研究课题。 本人在研究生期间,参与过的贵州省地税局综合应用平台、中国信息安全测评 中心数据库建设、源代码静态检测平台等项目中,都是用到x m l 应用技术,对其应用 有一定的了解和研究,另外由于本人还参与过一些信息安全方面的研究工作,故x m l 安全性问题有一定的认识和研究。通过理论与实践的结合,故对x m l 安全性问题进行 了进一步深入的挖掘和研究,促成了本人毕业论文的选题背景。 1 2 本论文的研究内容和主要方法 本文将由当今x m l 技术的完全漏洞事件入手,对漏洞事件进行简单的分析,然后 结合发展现状,追溯x m l 发展历史及发展原因,对x m l 技术进行总体清晰的阐述, 包括x m l 的定义、标准,以及x m l 与其它技术结合的使用方法,进而分析x m l 安全 问题产生的原因。然后阐述x m l 安全的相关基本理论知识及安全使用x m l 的实现方 法。并结合目前主流s o a 技术,详细阐述x m l 在s o a 中的安全应用框架的实现。最 后,对未来x m l 的发展方向和安全问题提出一些预期的展望。 研究的主要方法:采用理论结合实践的方法。首先研究x m l 及安全性相关理论, 充分结合自己在实践中碰到的问题,结合理论知识进行分析、解决。在对理论实践充分 掌握的基础上,再有实践中的新问题提出新的设想和建议,并尝试创新的解决方法。 湖北大学硕+ 学位论文 1 3 本论文组织结构 本论文分为五章。先由当今比较关心的信息网络安全中的x m l 安全事件引出x m l 安全的基本分析,进而整体阐述x m l 技术体系结构及原理,然后进一步分析x m l 安 全问题的根本所在,在充分认识的基础上结合s o a 中x m l 技术的应用,实现以个x m l 安全信息交换的简单框架。然后对未来这方面的工作展望。 第一章引言。 主要介绍了论文的选题背景、研究内容、主要方法以及本文的组织结构 第二章x m l 的安全漏洞事件浅析。 第三章x m l 发展由来及基本体系结构。 第四章x m l 的基本安全性问题。 第五章x m l 实现安全信息交换的安全性。 第六章x m l 在s o a 系统中实现安全层应用的实现。 第七章总结和展望。 2 第二章x m l 的安全漏洞事件浅析 2 1 概述 第二章x m l 的安全漏洞事件浅析 近几年,信息安全厂商将网络信息的安全漏洞频频被曝光,其中也不乏x m l 的安 全漏洞。黑客和不法分子利用x m l 安全漏洞进行破坏活动的事件也时有发生,本人在 研究生期间进行过一项专门的资料收集,都是各大软件厂商及互联网厂家涉及到x m l 安全的漏洞,这些漏洞有的已经被厂商修复,有的仍然为未修复漏洞,依然存在安全隐 患。本章简单举了两个例子,用以描述关于x m l 的确存在着安全问题,若在应用时不 加注意,必然会有很严重的后果。 2 2x m l 漏洞事件一:i e 7 0 漏洞事件 2 0 0 8 年1 2 月,微软曝出x m l 安全漏洞,将影响到所有使用m 控件的程序,包括 各主要浏览器、邮件客户端、办公软件、r s s 订阅器以及可嵌入网页的所有第三方软件 等。目前微软尚未发布针对这一最新x m l 漏洞的官方补丁。 之后,有黑客已经开始利用微软最新x m l 漏洞疯狂传播木马,几乎全体网民都面 临着由这一漏洞导致的严重安全威胁,包括i e 、傲游、腾讯t t 等浏览器上网,以及 w o r d 、w p s 等办公软件,或o u t l o o k 和f o x m f i l 等邮件客户端,甚至抓虾、周伯通、看 天下等r s s 订阅器都有可能中招。针对该漏洞的攻击甚至可能波及火狐等安全性较高的 浏览器。 后各大安全厂商均检测到这一漏洞。反病毒专家分析确认这是微软i e 7 的o d a y 漏 洞,已经发现“i e 70 d a y 漏洞生成工具 ,而且已经截获两个利用该漏洞的恶意挂马网 站。专家表示,该o d a y 漏洞将影响w i n d o w sx p s p 2 s p 3i e 7 以及w i n d o w s 2 0 0 3i e 7 等, 而v i s t a 系统尚未验证。该漏洞目前未有公开资料及补丁,已经确认为o d a y 漏洞。该漏 洞可由中用来解析h t m l 语言的动态链接库m s h t m l d l l 触发。 专家介绍,自1 2 月9 日开始,安全系统已经监测到3 0 余个被攻击的案例。随后还 发现了几个可疑网站,是黑客专门注册,用来传播病毒的。 虽然安全厂商几微软先后都发布了安全补丁,但是破坏还是形成了,说明x m l 的 安全性问题是不容怀疑的。 湖北大学硕士学位论文 2 - 3x m l 漏洞事件二:a d o b eb l a z e d sx m l 和x m l 外部实体注入 漏洞 b l a z e d s 是a d o b e 的一个新的关于远程( r e m o t i n g ) 和网络信息系统( w e b m e s s a g i n g ,类似于j m s ) 的开源项目。a d o b ed a t as e r v i c e s 组件用于为f l e x r i a 应用 提供数据消息传送、远程控制和管理等功能。m x m e s s a g i n g c h a n n e l s h t t p c h 锄e l 和 m x m e s s a g i n g c h a n n e l s s e c u r e h t t p c h a n n e l 等h t t p c h a n n e ls e r v l e t 类没有正确地过滤 a _ m f x 请求中所声明和包含的x m l 实体,x m l 解析器解析恶意负载就可能导致x m l 和x m l 外部实体注入漏洞,用户可在返回的响应中读取本地文件等敏感信息。 4 第三章x m l 发展由来及基本体系结构 第三章x m l 发展由来及基本体系结构 3 1x m l 发展由来和发展历史 3 1 1x m l 出现的原因 h t m l 和x m l 都是由w 3 c 组织创建的标准,w 3 c 的成员认识到随着w e b 的发展,必须由一种方法能够把数据和它的显示分离开来,这样就导致了x m l 的 诞生。不直接使用s g m l 的原因是s g m l 相当复杂,它的标准超过了5 0 0 页,而 x m l 的标准就非常简单,只有二十几页【2 1 。 w e b 起源于学术界,但推动其飞速发展的是商业,准确地说,是对未来所获 商业利益的预期。最近出现的通过w e b 进行商品零售已经引起了广泛的注意,但 是b t o b 的商务活动向在线发展的速度却受到限制。例如,通过制造过程的商品 流需要自动化,但实际上,依赖于复杂的程序到程序的交互作用系统的运行状况 并不理想,其原因是它们所依赖的统一处理过程并不存在。几个世纪以来,人类 在商务活动中已经成功地采用了交换标准化文档的方式,如采购订单、发票、货 物清单、收据等。文档能够在商务活动中起作用是因为它并不要求所涉及的各方 知道对方的内部处理过程。每条记录所表述的信息正是其接收者所需知道的信息, 除此别无其他。也许,这种交换文档的方式也是在线进行商务活动的最佳方式。 但是,h t m l 并不是为此项任务而创建的,相反地,x m l 是为文档交换所设计的。 而且越来越清晰的是,全球化的电子商务将主要依赖于协议流,几百万条协议以 x m l 文档形式在i n t e m e t 上传送【2 1 。 3 1 2x m l 发展历史 早在1 9 6 9 年,i b m 公司就开发了一种文档描述语言g m l 用来解决不同系统 中文档格式不同的问题,g m l 是i b m 许多文档系统的基础,包括s c r i p t 和 b o o k m a s t e r ,接下来的日子里,这个语言在1 9 8 6 年演变成一个国际标准( i s 0 8 8 7 9 ) , 并被称为s g m l ,s g m l 是很多大型组织,比如飞机、汽车公司和军队的文档标 湖北大学硕士学位论文 准,它是语言无关的、结构化的、可扩展的语言,这些特点使它在很多公司受到 欢迎,被用来创建、处理和发布大量的文本信息【2 1 。 在1 9 8 9 年,在c e r n 欧洲粒子物理研究中心的研究人员开发了基于s g m l 的 超文本版本,被称为h t m l 。h t m l 继承了s g m l 的许多重要的特点,比如结构 化、实现独立和可描述性,但是同时它也存在很多缺陷:比如它只能使用固定的 有限的标记,而且它只侧重于对内容的显示。 同时随着w e b 上数据的增多,这些h t m l 存在的缺点就变的不可被忽略。 w 3 c 提供了h t m l 的几个扩展用来解决这些问题,最后,它决定开发一个新的 s g m l 的子集,称为x m l 。 x m l 的出现就是为了解决h t m l 所存在的这些弊病。它保留了很多s g m l 标准的优点,但是更加容易操作和在w w w 环境下实现。在1 9 9 8 年,它就变成了 w 3 c 的标准。 3 2x m l 应用现状 经过不断的学习和总结,把x m l 应用面主要分为两种类型,文档型和数据 型。种常见的x m l 应用的功能不同,也可以分为一下6 种: 1 、自定义x m l + x s l t 生成h t m l ,这是最常见的文档型应用之一。x m l 存 放整个文档的x m l 数据,然后x s l t 将x m l 转换、解析,结合x s l t 中的h t m l 标签,最终成为h t m l ,在浏览器上显示。典型的例子就是c s d n 论坛。 2 、把x m l 作为微型数据库使用,这是x m l 最常见的数据型应用之一。利用 相关的x m la p i ( m s x m ld o m 、j a v ad o m 等) 对x m l 进行存取和查询。留 言板的实现中经常可以看到把x m l 作为数据库来使用。同时,要注意,数据库和 数据库系统,这两个概念是不同的。这里顺便提一下x m l 对数据库系统的影响。 在新版本的传统数据库系统中,x m l 成为了一种数据类型。和“传统 相对的就 是一种新形态的数据库,是完全以x m l 相关技术为基础的新的数据库系统。目前 比较知名x m l 新型数据库有e x i s t t 4 1 。 3 、x m l 作为信息传递的载体。这些应用虽然还是以x m l 为基本形态,但是 都已经发展出具有特定意义的格式形态。最典型的就是w e bs e r v i c e ,将数据包 装成x m l 来传递,但是这里的x m l 已经有了特定的规格,即s o a p 。不过这里 6 第三章潮l 发展由来及基本体系结构 还得说a j a x ,在a j a x 的应用中,也有一部分的应用是以自定义x m l 为数据, 不过没有成为业界的标准,这里不做详述。 4 、应用程序的配置信息数据文件。最典型的就是j 2 e e 配置w e b 服务器时用 的w e b x m l 及其他x m l 配置文件。只要将需要的数据存入x m l ,然后在应用程 序运行载入,根据不同的数据,做相应的操作。这里其实和上面提到的应用2 ,有 点类似,所不同的在于,数据库中的数据变化是个常态,而配置信息往往是较为 静态,缺少变化。 5 、其他一些文档的x m l 格式。如w o r d 、e x c e l 等。 6 、保存数据间的映射关系。如h i b e r n a t e 。 这几种常见应用中,还可以根据其应用广泛程度将其应用分为:自定义x m l 和特定意义x m l 。在应用1 和应用2 就是属于自定义x m l 的范畴:3 至6 则属于 特定意义x m l ,或者说是x m l 的延伸。这里介绍的6 种应用,基本涵盖了x m l 的主要用途。要深入的认识它,应该先从它的基础知识和基本应用入手。如下一 章所述。 3 3x m l 基础 本章将介绍x m l 的基本知识。 x m l 概念:x m l ,或称为可扩展标记语言( e x t e n s i b l em a r k u pl a n g u a g e ) , 是一种可以用来创建自己的标记的标记语言。它由万维网协会( w 3 c ) 创建,用 来克服h t m l ( 即超文本标记语言( h y p e r t e x tm a r k u pl a n g u a g e ) ,它是所有网 页的基础) 的局限。和h t m l 一样,x m l 基于s g m l ( s t a n d a r dg e n e r a l i z e d m a r k u pl a n g u a g e ) 标准通用标记语言。x m l 明确定义了结构化,描述和交换数据 的方法。x m l 与h t m l 的不同在于x m l 不是对数据进行格式化处理的。例如在 h t m l 中 等标签,很多只是表示一种显示的结构,这些标签不是想要的数 据,也不能保存到数据库中,而且h t m l 中的标签很有限,而且这些标签的意义 很固定,如 就是分段,当看见 2 3 4 ,不知道这个数字的意义,是表示温 度还是价格。然而,x m l 确实针对数据的,并且可以实现数据的自我描述,定义很 灵活,如 c e o 、 x i a o y a n g ,一看这些标签就知道它的 意思,而且可以转换为相应的数据库字段。总的来说,x m l 是数据格式的、有意 7 湖北大学硕士学位论文 义、灵活的标记语言 2 】。 x m l 基本语法及文档结构: 每个x m l 文档都由x m l 序言开始,在前面的代码中的第一行便是x m l 序 言, 。这一行代码会告诉解析器和浏览器,这个文件应该按 照前面讨论过的x m l 规则进行解析。第二行代码,例如 ,则是文档元素 ( d o c u m e n te l e m e n t ) ,它是文件中最外面的标签( 通常认为元素( e l e m e n t ) 是起 始标签和结束标签之间的内容) 。所有其他的标签必须包含在这个标签之内来组 成一个有效的x m l 文件。x m l 文件的第二行并不一定要包含文档元素;如果有 注释或者其他内容,文档元素可以迟些出现【2 1 。 可以发现还有一些特殊的语法。 代码用于表示无需进行解析的 文本,允许诸如大于号和小于号之类的特殊字符包含在文本中,而无需担心破坏 x m l 的语法。文本必须出现在 之间才能合适地避免被解析。这样 的文本称为c h a r a c t e rd a t as e c t i o n ,简称c d a t as e c t i o n 。 如今,x m l 已经是世界上发展最快的技术之一。它的主要目的是使用文本以 结构化的方式来表示数据。在某些方面,x m l 文件也类似于数据库,而且还可以 提供数据的结构化视图。 x m l 去掉了之前令许多s g m l 的随意语法。在x m l 中,采用了如下的语法: l ,任何的起始标签都必须有一个结束标签。 2 ,可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。 这种语法是在大于符号之前紧跟一个斜线( ) ,例如 。x m l 解析器会将其 翻译成 。 3 ,标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始 标签。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的 内部括号之前,是不能关闭外面的括号的【2 1 。 4 ,所有的属性都必须有值。 5 ,所有的属性都必须在值的周围加上双引号。 这些规则使得开发一个x m l 解析器要简便很多,而且也除去了解析s g m l 中花在判断何时何地应用那些奇怪语法规则上的工作。因此,在x m l 出现后六年 时间里就衍生出多种不同的语言,包括m a t h m l 、s v g 、r d f 、r s s 、s o a p 、x s l t 、 x s l f o ,而同时也将h t m l 改进为x h t m l 。 第三章x m l 发展由来及基本体系结构 另外,x m l 文档结构为树形结构,具有良好的结构定义及节点关系,这也为 其后期对x m l 的内容的处理提供了良好的数据结构基础条件,也是x m l 被广泛 应用的原因。 x m l 元素及属性: 下面主要通过例子来描述x m l 元素及属性。元素描述其所包含的数据,元素 还可以包含其它元素和属性。当元素定义包含其它元素或属性时,它是复杂类型。 基本元素定义由一个名称和一个数据类型组成。下面的示例展示如何定义名为 q u a n t i t y 的元素,它是具有整数值的简单类型。 元素对数据进行分类。类型定义元素包含的有效内容。下面的示例展示符合 上个示例中定义的q u a n t i t y 元素的x m l 数据的有效实例: 6 3 下面的示例展示“数量”( q u a n t i t y ) 元素的一个无效实例: s i x t yt h r e e 属性是不能包含其他元素的命名的简单类型定义。属性也可以被分配一个可 选默认值,且必须出现在复杂类型定义的底部。此外,如果声明了多个属性,它 们可以任意顺序出现【5 1 。 下面的代码展示如何声明名为o r d e r d i s c o u n t 的属性,该属性定义为具有简 单类型n u m b e r 。在这里使用属性有意义,因为属性是可选的。如果未提供任何 o r d e r d i s c o u n t ,x m l 数据仍有效。如下: 9 湖北大学硕士学位论文 x m l 解析: 对x m l 的处理从解析开始的。解析是开发人员能够使用的最基本的服务。 x m l 为解析器读取x m l 文档,解释语法并向应用程序传递有意义的对象。解析 器可能还提供其他服务,比如验证( 保证文档符合x m ls c h e m a 或d t d ) 或者名 称空间解析。 因为所有x m l 处理都从解析开始。无论使用高层编程语言( 如x s l t ) 还是 低层j a v a 编程,第一步都是要读入x m l 文件,解码结构和检索信息等等,这就 是解析。 解析文档时都是采用现成的解析库( 基本上每种编程语言都有,包括c o b o l 【c o m m o nb u s i n e s so r i e n t e dl a n g u a g e 】) 。 x m l 不是一种复杂的语法,因此认为可以自己通过正则表达式或其他特殊方 法来解析的想法是可以理解的。但实际上却很难成功,因为x m l 语法要求支持多 种编码和很多难以捉摸的特性,比如c d a t a 节和实体。自定义的实现很难照顾到 所有这些方面,因而造成了不兼容性。 多数解析器提供了至少两种a p i ,通常是一个对象模型a p i 和一个事件a p i ( 也称为流a p i ) 。比如,j a v a 平台同时提供了d o m ( 文档对象模型) 和s a x ( s i m p l e a p if o rx m l ) 。 这两套a p i 提供了相同的服务:文档解码、可选的验证、名称空间解析等等。 差别不在于服务而在于a p i 使用的数据模型【6 1 。 第一种方法: 对象模型a p i 定义了层次化对象模型来表示x m l 文档。对应x m l 语法中的 每个概念定义相应的类:元素、属性、实体、文档。解析器读入x m l 文档的时候, 建立x m l 语法和类之间的一对一映射。w 3 c 规范化了d o m ,它的主要优点是可 移植性:它是作为一种c o r b a 接口定义的,被映射到很多语言。因此如果了解了 j a v a s c r i p t 中的d o m ,也就知道了j a v a 、c + + 、p e r l 、p y t h o n 和其他语言中的d o m 。 另一种数据模型是j d o m ,一种针对j a v a 优化的d o m ( 专用于j a v a ) ,和 j a v a 语言结合得更紧密,但是按照定义缺乏可移植性。 各种基于对象的a p i 其优点和不足基本上是一样的。从好的方面来说,如果 熟悉x m l 语法的话,就更容易理解对象模型a p i 。因为它直接从x m l 语法映射 到类,很容易学习、使用和调试。 1 0 第三章x d l 发展由来及基本体系结构 x m l 语法非常复杂,即使文档很小,解析器也要创建很多对象。对x m l 词 汇表进行的优化通常针对的是存储和数据传输效率,而不是处理,因而应用程序 可能需要对数据进行预处理。很多情况下,在处理之前必须将数据从x m l 对象模 型复制到应用程序专用的对象模型或者数据库。 因为这种对象模型是通用的,包含很多应用程序并不需要的对象之间的引用 ( 比如,从子元素到父元素的反向引用) 。这些引用进一步增加了内存消耗。 在桌面上处理小型文档这可能不是大问题,但是在其他环境中,比如服务器 上,对象模型固有的低效率是不可接受的1 2 】。 第二种方法: 第二种选择是事件a p i ,比如s a x 。这个概念是上述对象模型方式的一种反 映。只不过这种方法不根据x m l 语法定义通用的数据模型,其解析器依赖应用程 序程序员建立定制的数据模型。 因此解析器可以做得更小,因为只需要传递最少量的信息。更重要的是,和 “。 对象模型相比总的效率更高,程序员可以根据应用程序的需要定制对象模型。 它的优点很明显。统计应用程序或总结信息的任何应用程序都可以从中获益, 因为它们的数据模型只需计算总计而无需复制整个文档。 类似的,即使动态处理文档的应用程序,不需处理或者只需少量处理,也可 从中受益,因为根本不需要存储数据。 一 由于减少了内存需求,事件a p i 可以处理任意大小的文档,包括大小超过可 用内存的文档。基于同样的原因,这类a p i 也非常适合多个进程并发执行和共享 内存的服务器。 效率的代价是简单性的损失。事件a p i 一向以难用著称,因为应用程序员要 负责更多的操作。虽然短期看来如此,从中期和长期来看,效率上的改进足以抵 消略微增加的复杂度。 第三种方法: 第三种方法不太常用,这里也简单叙述一下。即x m l 编组库形式的解析,如 c a s t o r 。该方法介于对象模型和事件方法之间。 这种方法的思想是从x m ls c h e m a 生成一个对象模型而不是通用模型( 如 d o m ) ,解析器生成更加针对所用词汇表的数据模型。比方说,如果词汇表处理 的是发货单,那么可以预料其中会包含发送方、接收方、日期、产品类别、产品 1 l 湖北大学硕士学位论文 标识、单价和总价。d o m 将这些元素映射到一个一般性的元素类。编组库为发 送方、接收方、日期、产品类别、产品标识、单价、总价和文档中出现的其他元 素创建专门的类。 从处理的是根据词汇表定制( 与根据应用程序的需要定制可能相同,也可能 不同) 的而不是通用数据模型这方面来讲,编组库具备事件a p i 的一些优点。 讲到解析,就必须要谈到x m l 写入。以下将介绍x m l 写入相关问题。 解析器读取和解码x m l 文档,将其从磁盘上转到内存中。那么另一个方向上 的移动该如何处理呢? 如果应用程序需要将数据存储到x m l 文件中怎么办? 虽然建议避免使用特殊的例程解码x m l 文档,但是对于写入x m l 没有这样 的疑虑。读的时候必须保证实现了所有的规则,包括一些隐晦之处。但是写入的 时候,则可以实现一个小型的、可工作的词汇表子集。 但是多数对象模型a p i 仍然承担了双重职责,除了读以外还要能将对象树写 入磁盘。如果使用事件a p i ,就可以从数据结构生成写事件。 综上所述,用于读x m l 文档的a p i 对应用程序的总体性能有重要影响,因此 一定要花时间熟悉各种选项,为平台、编程语言,更重要的是为项目做出最佳选 择。 x m l 解析具体步骤: 其实x m l 的解析就已经是x m l 高级技术,上面讲解了三种解析的方法,对 应于具体的应用时,一般x m l 解析都采用的两种解析器,分别为d o m 何s a x 。 本文以j a v a 编程语言为例,下面将非别介绍。首先d o m 和s a x 得区别和特点 为: d o m :在内存中建立起一颗对应的x m l 文档树,因此消耗内存大,但容易 使用,特别是交互式应用效果理想。 s a x :事件驱动,串行存取,应用于服务器端或者高性能应用。 d o m 解析步骤为: 第一步:创建j a x p 文档b u i l d e r 。 第二步:调用解析器,创建d o c u m e n t 对象,表示该x m l 文档。 第三步:规格化d o m 树。 第四步:获取树的根节点。 第五步:访问节点的属性。 1 2 第三章x m l 发展由来及基本体系结构 s a x 的解析步骤为: 第一步:创建解析器实例。 第二步:创建一个内容句柄来响应解析事件。 第三步:使用指派的句柄和内容文档来调用解析器。 另外,d o m 和s a x 解析x m l 的详细对象和方法可以参考j a v a 的文档,这 里就不赘述了。 湖北大学硕士学位论文 4 1 引言 第四章x m l 的基本安全性问题 针对目前x m l 的几种基本应用,自然可以将x m l 安全性问题划分为基本的安全 性问题以及网络信息交换中的安全性问题,本章将详细描述x m l 的基本安全性问题, 也可以成为为x m l 在本地安全问题,在下一章中将详细讨论x m l 的网络安全性问题。 4 2x m l 解析安全问题 x m l 的解析式开发人员最常用到的,因此与x m l 解析相关的安全问题也是 最为普遍和紧迫的。以下将介绍如何通过配置s a x 解析器,安全使用x m l 解析。 由于x m l 系统经常接受并处理不同来源的数据,所以要严加防范恶意数据 有意或无意侵入系统所造成的严重影响。尽管与传统的二进制数据格式相比,有 效性验证和良好格式校验提供了更多实质性的保护,但还是需要考虑一些x m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 书法天地二教学设计-2023-2024学年初中书法练习指导八年级上册川教版
- 2025租赁合同偏向甲方
- 2025合同范本(办公设备)
- 2025年北京市存量房屋买卖合同(自助成交版)
- 2.4 向量的坐标表示说课稿-2025-2026学年中职基础课-拓展模块一 上册-高教版(2021)-(数学)-51
- 1.1 数列的概念(1) 教学设计-2024-2025学年高二上学期数学湘教版(2019)选择性必修第一册
- 橡胶厂文件管理规范制度
- 湖南省益阳市资阳区九年级化学下册 第九单元 课题2 溶解度说课稿 新人教版
- 宁波事业单位笔试真题2025
- 2025先进纳米材料研发合同
- 银行中央银行会计核算数据集中系统综合前置子系统应急预案模版
- 《智能建筑环境设备自动化》-讲稿-第1章-建筑设备自动化系统工程认知
- 2023年重庆市大渡口区春晖路街道阳光社区工作人员考试模拟试题及答案
- 全国各大媒体的报料热线电话号码
- 数控heidenhain说明书TNC直接提供两种加工孔模板的循环
- GB/T 42453-2023信息安全技术网络安全态势感知通用技术要求
- JJG 860-2015压力传感器(静态)
- GB/T 22231-2008颗粒物粒度分布/纤维长度和直径分布
- GB/T 18253-2000钢及钢产品检验文件的类型
- GB 5009.3-2016食品安全国家标准食品中水分的测定
- 液化气站安全生产目标考核与奖惩记录
评论
0/150
提交评论