《Spring Security3》第一章第一部分翻译(转载)

第一章   一个不安全应用的剖析

毫无疑问,安全是任何一个写于 21 世纪的 web 工程中最重要的架构组件之一。在这样一个时代,计算机病毒、犯罪以及不合法的员工一直存在并且持续考验软件的安全性试图有所收益,因此对你负责的项目综合合理地使用安全是至关重要的一个元素。

     本书的写作遵循了这样的一个开发模式,这个模式我们感觉提供了一个有用的前提来解决复杂的话题——即使用一个基于 Spring3 web 工程作为基础,以理解使用 Spring Security3 使其保证安全的概念和策略。

     不管你是不是已经使用 Spring Security 还是只是对这个软件有兴趣,就都会在本书中得到有用的信息。

在本节的内容中,你能够:

检查一个虚拟安全审计的结果

l  讨论 web 应用通常的一些安全问题

l  学习软件安全中的几个核心词汇和概念

如果你已经熟悉基本的安全术语,你可以直接跳到第二章: Spring Security 起步,在哪里我们将涉及这个框架的细节。  

安全审计

         这是你作为软件开发人员在 Jim Bob Circle Pant Online Pet Store(JBCPPets.com) 工作的一个清晨,你正在喝你的第一杯咖啡的时候,收到了你主管的以下邮件:

        

         To: Star Developer <[email protected]>

From: Super Visor <[email protected]>

Subject: 安全审计

Star,

         今天,有一个第三方的安全公司要审计我们的电子商务网站。尽管我知道你在设计网站的时候已经把安全考虑在内了,但请随时解决他们可能发现的问题。

                                                                                             Super Visor

什么?你在设计应用的时候并没有过多考虑安全的问题?似乎你有许多的东西要向安全审计人员学习。首先,让我们花一点时间检查一下要审计的应用吧。

关于样例应用

         尽管在本书的后续内容中我们要模拟虚拟的场景,但这个应用的设计以及我们对其进行的改造都是基于现实世界中真实使用 Spring 的工程。

         这个应用的设计很简单,使得我们能够关注于重要的安全方面而不会过多关注 ORM 的细节和复杂的 UI 技术。我们期望你能够参考其他的资料来掌握示例代码中所涉及功能的技术。

         代码是基于 Spring Spring Security3 编写而成的,但是它很容易改变为 Spring Security2 的例子。关于 Spring Security 2 3 的细节差异,可以参照第十三章:迁移至 Spring Security ,可以作为将示例代码转换成 Spring Security2 的帮助材料。

         不要以本应用作为基础去构建真实的 Pet Store 在线应用。本应用已经有意识的构建地简单并关注于本书所要阐述的概念和配置。

JBCP Pets 应用的架构

         本应用遵循标准的三层结构,包括 web 层、服务层和数据访问层,如下图所示:

 


  

web 层封装了 MVC 的代码和功能。在示例代码中,我们使用了 Spring MVC 框架,但是我们可以一样容易的使用 Spring Web Flow Struts 甚至是一个对 Spring 友好的 web stack Apache Wicket

在一个典型使用 Spring Security web 应用中,大量配置和参数代码位于 web 层。所以,如果你没有 web 应用开发,尤其是 Spring MVC 的经验,在我们进入更复杂的话题前,你最好仔细看一下基础代码并确保你能理解。再次强调,我们已经尽力让我们的应用简单,把它构建成一个 pet store 只是为了给它一个合理的名字和轻量级的结构。可以将其与复杂的 Java EE Pet Clinic 示例作为对比,那个示例代码展现了很多技术的使用指导。

服务层封装了应用的业务逻辑。在示例应用中,我们在数据访问层前做了一个很薄的 façade 用来描述如何在特殊的点周围保护应用的服务方法。

在典型的 web 工程中,这一层将会包括业务规则校验,组装和分解 BO 以及交叉的关注点如审计等。

数据访问层封装了操作数据库表的代码。在很多基于 Spring 的工程中,这将会在这里发现使用了 ORM 技术如 hibernate JPA 。它为服务层暴露了基于对象的 API 。在示例代码中,我们使用基本的 JDBC 功能完成到内存数据库 HSQL 的持久化。

在典型的 web 工程中,将会使用更为复杂的数据访问方式。因为 ORM ,即数据访问,开发人员对其很迷惑。所以为了更清晰,这一部分我们尽可能的对其进行了简化。

 

猜你喜欢

转载自kongcodecenter.iteye.com/blog/1320029