第1部分:
基于模型的java EE Web安全配置分析
萨尔瓦多·马丁内斯,瓦莱里奥·科森蒂诺,乔迪·卡伯特
摘要
Java EE web应用程序,作为向远程客户提供分布式服务的手段而被广泛使用,这带来了强大的安全性要求,因此,这些应用程序所管理的资源仍然需要受到保护,以避免未授权的信息披露及操作。为此,Java EE框架为开发人员提供了定义访问控制策略的机制。不幸的是,所提供的安全配置机制的多样性和复杂性,使得安全策略的定义和操作变得复杂,且非常容易出错。安全需求不是静态的,因此所实施的政策必须被改变而且经常回头去检查,在适当的抽象层次发现和表达策略,使得他们的理解和重构显得是一个关键的要求。为了解决这个问题,本文提出了一种基于模型的方法,旨在帮助安全专家去可视化,(自动)分析和操作Web安全策略。
简介
Java EE是一种流行的动态web应用程序开发的技术选择,它也是其他一些不太通用的框架的基础层。Java EE便于将分布式信息和服务暴露给远程用户。在这个场景中,安全是一个主要关注点, 因为构成web应用程序的web资源,可能被许多用户通过不受信任的网络访问。因此,Java EE框架为开发人员提供了工具来指定访问控制策略,以确保web应用程序公开资源的机密性和完整性。不幸的是,尽管这些安全机制非常有效, 实现安全配置仍然是一个复杂且容易出错的活动,这需要高度的专业知识来避免不一致和错误配置的问题,而这些问题可能会造成严重的业务损失。由于web应用程序管理的资源可以被许多用户访问,并且可以遍历不受保护的网络,因此不管在资金还是声誉方面,意外的数据披露可能会导致重大的损失。
对于Java EE应用程序访问控制的具体情况,web应用程序的基于角色的声明式访问控制(RBAC)政策,使用两种不同的文本具体语法以及相对复杂的执行语义,运用基于规则的低级访问控制语言编写约束,以此来被指定。具体来说,用户可以:
1.通过使用一组预定义的标记元素来编写XML web描述符文件中的约束。
2.在Java Servlet组件上编写注释(使用与XML标记元素不同的语法和组织)。
这两种机制都可以在同一个Java EE应用程序中使用,因此需要组合规则来获得最终的安全策略。
在这种情况下,发现和理解一个给定的web应用程序真正执行了哪些安全策略,成为一项关键的需求。这一发现过程的主要挑战是,缩小在低层分散的策略表示与更高级、更容易理解操作的全面表示之间的差距。为了解决这个问题,我们提供了Java EE web应用程序的例子:
1.Java EE框架提供了两种声明性约束规范机制的语言统一,因此这两种机制的贡献可以由相同的过程和工具进行分析。
2.一个逆向的工程过程,它提取了使用多种Java EE机制实现的安全配置,并将它们集成到符合拟议web安全元模型的安全模型中。
3.应用程序的演示及使用基于模型集成表示的好处,使得它可以在大量的模型驱动技术和工具的安全领域重新使用,这些技术和工具可以应用于可视化、分析、演进等模型。
我们的方法补充了现有的Java逆向工程工作,后者跳过了安全方面。
通过一个原型工具的使用,和将它应用到一个真正的java EE应用GitHub的样本中,我们论证了我们方法的可行性。
评价
为了演示我们方法的可行性和有效性,我们已经构建了一个原型工具,并对从GitHub中提取的真实Java EE项目进行了评估。
从收集的项目中,我们执行了两个过滤步骤,目的是移除玩具项目。首先,我们手动过滤掉那些名称或路径中包含以下单词之一的项目:测试、样例、演示、示例、教程、培训、练习、课程。其次,从项目左边,我们推导出他们的安全配置的模型表示,我们过滤了那些声明少于5个安全约束的项目,以这种方式而得到了一个由16个项目组成的样本。
我们对之前的样本进行了三次分析: 首先,应用我们的工具,获取了它们的安全配置的模型表示,并测量了执行任务的时间。其次,我们自动评估了第4部分中给出的正确性查询。最后,为了检查误报的存在,我们在项目列表中手动检查了这个属性。
表1显示了每个Java EE项目构成其安全配置的约束数量,对于安全正确性查询,如果一个异常被手动检测或自动检测,则汇总得到的结果。
表1还显示了我们的工具从相应的Java EE web项目中提取模型的时间,并对我们的安全性及正确性属性进行了评估。模型提取的时间直接取决于Java文件的数量,而计算属性的时间取决于策略中安全规则的数量以及规则之间的交互的复杂性。对于离线分析,这两种时间都是相当少的,具体来说,分析属性的时间总是低于1秒。
这评价表明,我们的方法: 1)有良好的性能,因此适用于在现实场景,2)相关的安全信息不会丢失在这个过程中, 因此可以对其进行分析,就好像它是在原始配置工件上手工完成的一样。在对完整性属性的评估中没有出现假正或假负的情况。我们的工具和手工检查都得到了相同的结果。
结论
我们已经提出了一个模型驱动的逆向工程方法,来从Java EE web应用程序的各种安全配置机制中提取访问控制政策。而过程的结果是,一个独立于平台的访问控制模型,在一个地方集成了各种各样的部分安全约束,从而促进了对策略的理解和分析。我们通过开发一套概念工具的证明,证明了方法的可行性和针对性,我们已经在GitHub上获得了一套真正的项目。
作为未来的工作,我们设想了几种可能的扩展。首先,我们认为, 针对修正重构政策的自动部署的正向工程方法,将是我们方法的自然进化。然后,我们相信,将其扩展到包含其他安全配置也同样有趣。从这个意义上说,我们打算扩展我们的方法,包括:1)程序性安全约束,2)通过其他来源的安全配置(例如,从底层数据库系统)来获得一个更完整版本的系统安全作为一个整体, 3)更复杂的Java EE框架之上(他们通常提供自己的安全机制)的Spring框架。
最后, 将安全属性的编码和评估作为OCL查询,接着第4部分中打开的路径,我们打算扩展我们的方法和工具来定义和自动分析一组重要的安全属性,而这些属性超出了本文所描述的正确性属性。
第2部分:
使用组件框架的Web应用程序开发
V.奥卡诺维奇
电机工程/计算机科学系
萨拉热窝,波斯尼亚和黑塞哥维那
摘要:
本文描述了基于web组件的web框架的动态web应用程序的开发。本文考虑了几个现有的开放源码Java web组件框架。然后,文章给出了所分析web框架的基本特征,并给出了它们的主要特征。为了给出一个框架可能使用的概念,本文对所有分析的web框架进行了比较,并对它们进行了总结,然后给出了它们最重要的特征。
I.介绍
一个web应用程序框架就是一个软件框架,它支持动态web应用程序的开发。有很多开源Java web应用程序开发框架,根据类型的不同,有基于动作的框架和基于组件的框架。
为了加快web应用程序开发的速度,基于动作的框架主要依赖于外部配置文件,而不是Java代码。正因为如此,它们不适合web应用程序的快速开发。
基于组件的框架的范例是非常不同的。这类框架在视图层中创建了一个组件抽象。因此,web应用程序的开发人员在其应用程序中定义了一个组件,并告知组件的功能。
对于许多开放源码的Java web框架,开发人员很难选择适合web应用程序开发的框架。因此,本文的目的是帮助web开发人员更容易地选择正确的web应用程序开发框架。本文将分析一些开放源代码的基于Java组件的框架。此外,本文还将提供分析框架的基本特征,并给出它们最重要的特征。此外,还将对分析的web框架进行比较和总结。
II. 开源软件
开源软件(OSS)是一个可以免费地使用、改变、由任何人共享的软件。OSS编程代码可在互联网上使用,因此它可以被世界各地的人们使用。当互联网上的开发人员可以自由地阅读和修改软件时,软件就会得到发展。许多开发人员可以在开放源码软件上工作,他们可以修改和更新它。开源软件的概念是创建高质量软件的良好模式。
OSS对学生来说非常重要,有几个原因。世界各地的程序员都在不断开发许多免费工具,而学生们可以利用这些工具来完成自己的工作。学生可以向世界上最好的研究人员和工程师学习。他们可以打开一个软件,看看程序员是如何组织的。通过学习由最好的开发人员编写的源代码,学生可以学会制作更好的软件。因此,开源软件可以帮助学生成为更好的开发人员。
此外,开源软件也是让年轻的软件开发者获得国际认可的好方法。现有的开源项目的所有者总是在寻找更多的合作者。开发人员可以加入一些开放源码项目。通过参与项目,开发人员可以创建一些有用的东西,并进一步开发他们的技能。
对于发展中国家的公司、组织、政府和学生来说,OSS提供了一种防止大规模非法盗版软件的方法,以及一个提高软件开发水平到国际标准的机会。开源软件已经改变了许多公司、政府和教育机构的专有软件。除了更便宜的开源技术外,公司、政府和教育机构的高管们都认识到,它提供的性能和可靠性比专有的解决方案更好。
III. 框架
按照免费字典的定义, 框架是“一种支持或封闭其他东西的结构,特别是一种用作基础结构的骨骼支撑。”
一个框架也可以被定义为一个由计算机编码,脚本,类,函数组成的统一实体,这提供了一个通用的功能,为了获得特定的功能,由用户生成的代码对其进行专门化或扩展。一个框架通过将设计划分为抽象类,并定义它们的职责和协作,来提供体系结构的指导。通过生成子类和组合框架类的实例,开发人员将该框架定制为特定的应用程序。框架的另一个定义是:一个框架通常是一种体系结构模式,它提供了一个可扩展的应用模板内域。通过指定一个框架,开发人员指定了体系结构的架构,以及向希望将该框架适应其自身环境的用户,公开插槽、选项卡、旋钮和刻度盘。
框架的最重要的好处是:模块化,可重用性,可扩展性和反演控制。这些主要的好处是,提供了所有开发人员想要的东西,而且它是快速的应用程序开发、代码和设计的重用,降低了维护成本,使其更易于定制。
A.基于组件的框架
与基于动作的框架不同,基于组件的框架的哲学是完全不同的。基于组件的框架在视图层中创建一个组件抽象。事件监听器捕捉用户操作,并将其映射回控制器层中的代码。使用组件的主要优点是模块化。复杂的web页面可以很容易地使用web组件进行组合。此外,在相同或另一个应用程序的几个web页面上,重用一个或多个web组件是可能的。另外,基于组件的框架使得web设计人员和Java开发人员之间的协作更加容易。
一个好的框架可以降低开发应用程序的成本。基于Java组件的框架是非常流行的框架类型。为了让web开发人员了解他们可能使用的框架,下面是对基本特性的分析,以及对一些基于框架的开源Java组件最重要特征的表示。出于空间的考虑,本文将不会给出或讨论使用这些web框架的web应用程序开发的示例。此外,在这些框架的引用中,还可以找到具体的例子及其详细描述。
IV. Tapestry
Tapestry是用Java编写的开源面向组件的web应用程序框架,使用这个框架开发人员可以轻松地创建健壮的、内容丰富的web应用程序。使用Tapestry开发的应用程序是web页面的集合。在Tapestry应用程序中,每个web页面都是简单的HTML页面。web页面是使用web组件构建的。这意味着web页面的每个元素都用适当的web组件表示。Tapestry应用程序是由HTML模板和规范构建的,它们可以在任意servlet容器上运行。
在web应用程序开发中,Tapestry实现了模型-视图-控制器(MVC)模式。在Tapestry应用程序中,使用这种设计范式进行分离,其中模型由域对象组成,视图用简单的HTML文件表示,而控制器则以XML页面规范的形式实现。Tapestry框架被设计用来支持web应用程序的敏捷开发。根据这一点,Tapestry负责许多活动,比如分派用户请求、监视文件系统更改Java类、管理服务器端状态等等。事实上,Tapestry支持web开发人员编写更少的代码。因此,web开发人员可以利用他们的时间尽可能多地编写应用程序的功能。
V. Java Server Faces
Java Server Faces(JSF)是用于创建用户界面的Java web组件应用程序框架。JSF是标准Java EE平台的一部分。JSF是一种用于构建服务器端用户界面的标准化显示技术。JSF框架支持web组件的再利用。通过使用现有的可重用web组件,JSF框架简化了web页面的构建和用户界面的构建。JSF技术有许多web组件。通过使用它们,这个框架减少了构建和维护web应用程序的工作量。此外,该框架还提供了处理组件状态的处理组件数据和体系结构。另外,JSF处理事件,并验证用户输入。
JSF应用程序框架提供了表示逻辑和应用程序逻辑之间的清晰分离,这个框架实现了模型-视图-控制器模式。MVC设计模式的JSF实现,使应用程序更加易于管理。模型管理着应用程序的数据和逻辑,视图则负责处理用户界面和控制用户输入的控制器。对于团队开发,这种web应用程序开发的方法使得团队中的每一个成员都可以专注于工作的各个部分。
JSF框架使用Java服务器页面,来表示用户界面组件的表示逻辑和标准标签库。使用JavaBeans组件,此框架定义了web页面上组件的功能。在应用程序
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[140783],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。