《Spring Security3》第一章第一部分翻译

不想你离开。 提交于 2019-12-01 01:54:03

本文为转载学习

原文链接:http://lengyun3566.iteye.com/blog/1069004

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

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

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

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

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

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

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

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

安全审计

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

To: Star Developer <stardev@jbcppets.com>

From: Super Visor <theboss@jbcppets.com>

Subject: 安全审计

Star,

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

                                                                                                                                                 Super Visor

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

关于样例应用

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

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

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

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

JBCP Pets应用的架构

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

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

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

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

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

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

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!