`
lengyun3566
  • 浏览: 446945 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
D59180b9-02f1-3380-840c-ea34da46143c
《Spring Secur...
浏览量:379420
社区版块
存档分类
最新评论

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

阅读更多

 

应用所使用的技术

我们使用了一些每个Spring程序员都会遇到的技术和工具,以使得示例应用很容易的运行起来。尽管如此,我们还是提供了补充的起步资料信息在附录:参考资料。

我们建立使用如下的IDE以提高开发的效率并使用本书的示例代码:

<!--[if !supportLists]-->l  <!--[endif]-->Eclipse 3.43.5 Java EE版本可以在以下地址获得:

http://www.eclipse.org/downloads/

<!--[if !supportLists]-->l  <!--[endif]-->Spring IDE2.2(2.2.2或更高)可以在以下地址获得:http://springide.org/blog

在本书的示例和截图中,你会看到EclipseSpring IDE,所以我们建议你使用它们。

你可能希望使用免费的Spring Tool SuiteSTSEclipse插件,它作为Eclipse的一个插件由Spring Source开发,其包含了下一代的Spring IDE功能(可以在以下地址下载:http://www.springsource.com/products/springsource-tool-suite-download)。一些用户不喜欢它的侵入性和SpringSource的标示,但是你如果从事Spring相关的开发,它提供了很多有用的功能。

我们提供了Eclipse3.4兼容的工程以允许你在Eclipse中构建和部署代码到Tomcat6.x的服务器上。鉴于大多数开发人员熟悉Eclipse,所以我们觉得这是最直接的方式来打包示例代码。我们为这些例子提供了Apache Ant的脚本以及Apache Mavenmodules。不管你熟悉开发环境,我们希望你能够在阅读本书的时候能够运行示例代码。

另外,在阅读过程中,你可能会愿意去下载Spring 3Spring Security 3的源码版本。如果你有不明白的地方或想获取更多的信息,他们的JavaDoc和源码是最好的参考资料,他们提供的示例也能够提供额外的帮助并消除你的疑惑。

查看审计结果

         让我们回到e-mail并看一下审计的进展。哦,结果貌似并不好啊:

 

To: Star Developer <stardev@jbcppets.com>

From: Super Visor <theboss@jbcppets.com>

Subject: FW: Security Audit Results

Star,

         看一下审计结果并制定一个计划来解决这些问题。

                                                                                                                                            Super Visor

审计结果:

本应用存在如下的不安全隐患:

<!--[if !supportLists]-->  l  <!--[endif]-->缺少URL保护和统一的认证造成的权限扩散;

<!--[if !supportLists]-->  l  <!--[endif]-->授权不合理甚至缺失;

<!--[if !supportLists]-->  l  <!--[endif]-->数据库认证信息不安全且很容易获取;

<!--[if !supportLists]-->  l  <!--[endif]-->个人的识别信息和敏感数据很容易获取或没有加密;

<!--[if !supportLists]-->  l  <!--[endif]-->不安全的传输层保护,没有使用SSL加密;

<!--[if !supportLists]-->  l  <!--[endif]-->危险等级:高

我们希望本应用在解决这些问题前能够下线。

 

哦,这些结果看起来对我们公司很不利,我们最好尽快将这些问题解决。

 

公司(或他们的合作伙伴、顾客)会雇佣第三方的安全专家来审计他们软件的安全性。审计过程会联合使用破解,代码检查以及与开发人员和架构师的正式或非正式交流。


 

安全审计的通常目标是保证基本的安全开发措施被遵守以实现客户数据和系统功能的完整性和安全性。依靠软件业所追求的工业化目标,审计人员可能会使用工业化的标准或特定的方式来进行这些测试。

 

收到这样的安全审计结果可能是一件令人很吃惊的事情,但是,如果你按照被要求去做,这将会是一个绝佳的机会来学习和提升软件质量,同时,这将会引领你去实现一些常规的策略来保证软件的安全性。

 

让我们来看一下审计人员发现的问题并制定一个计划去解决他们。

 

认证

缺少URL保护和统一的认证造成的权限扩散

 

认证是在开发安全应用中,你必须记住的两个关键词之一(另外一个是授权)。认证识别系统中的某一个用户,并将其与一个可信任的(即安全的)实体关联。一般来讲,软件系统会被分为两个层次的访问范围,如未认证通过的(或匿名的)和认证通过的,如下图所示:



 匿名可访问的应用功能是用户无关的(如一个在线商店的产品列表)。

匿名区域不会:

<!--[if !supportLists]-->l  <!--[endif]-->要求用户登录系统;

<!--[if !supportLists]-->l  <!--[endif]-->展示敏感信息如人名、地址、信用卡号、订单等;

<!--[if !supportLists]-->l  <!--[endif]-->提供管理系统全局的状态或数据。

 

未认证的系统区域可供任何人使用,即使该用户没有被系统所识别。但是,有可能对于已认证的用户会看到更多的信息(如随处可见的欢迎{名字}文本)。Spring Security的标签库可以完全支持对登录用户进行有区别的显示,这部分内容将在第五章:精确的访问控制中介绍。

 

我们将在第二章中解决这个发现的问题并使用Spring Security的自动配置功能实现一个基于表单的认证。更复杂的表单认证(通常用来用在与企业系统集成或外部的认证存储)将在本书的第二部分进行讲解,这部分从第八章:对OpenID开放开始。

授权

授权不合理甚至缺失

授权是两个重要安全概念中的第二个,它对实现和理解应用安全很重要。授权保证授权过的用户能够对功能和数据进行恰当的访问。构建应用的安全模块的主要任务是拆分应用的功能和数据并将权限、功能和数据、用户结合起来,以实现对这些内容的访问能够被很好的控制。在审计中,我们的应用在这一点的失败表明应用的功能没有按照用户角色进行限制。试想一下,你正在运行一个在线购物系统,查看、取消或修改订单以及用户的信息对所有的用户可见!(这将是多么恐怖的事情)

我们将会在第二章通过使用Spring Security的授权模块解决基本的授权问题,接着会有关于授权更高级的知识介绍,其中在第五章介绍web层,在第六章:高级配置和扩展中介绍业务层。

数据库认证安全

数据库认证信息不安全且很容易获取

通过检查应用的源码和配置文件,审计人员指出用户的密码在配置文件中以明文的显示存储,这会导致恶意的用户很容易通过访问到服务器进而访问应用。

因为应用中包含了个人和财务的信息,一个恶意的用户如果能够非法访问任何数据都会导致公司信息的泄露。保护能够进入系统的凭证信息对我们来时是最重要的事情,最重要的第一步是保证在安全上一个点的失败不会连累整个系统。

我们将会在第四章:凭证安全存储中检查Spring Security的数据访问层以实现凭证存储的安全配置,那里将会用到JDBC连接。在第四章中,我们同时也会学习一些内置的技术以增强保存在数据库中密码的安全。

敏感信息

个人的识别信息和敏感数据很容易获取或没有加密

                   审计人员指出一些重要和敏感的数据,包括信用卡号,在系统中的任何地方都没有加密或混淆。这除了是缺乏数据设计的一种典型表现外,对信用卡号缺少保护也是违反PCI标准的。

                   幸运的是,基于Spring Security的注解式AOP支持,我们可以使用一些简单的设计模式和工具来安全的保护这些信息。我们将会在第五章中阐述在数据访问层保护这种数据的一些技术。

数据传输层保护

不安全的传输层保护,没有使用SSL加密

 

在现实世界中,很难想象一个在线的商业网站不使用SSL保护;不幸的是,我们的JBCP Pet正是这样。SSL保护能够保证在客户端浏览器和web应用服务器之间的通信是安全的,可以防护多种的信息篡改和窥探。

在第五章中,我们将会介绍如何在应用的安全架构中使用传输层安全配置,包括规划应用的那些部分要使用强制的SSL加密。

使用Spring Security解决安全问题

                   Spring Security提供了丰富的资源,许多安全的通用问题都可以用非常简单的声明或配置来解决。在接下来的章节中,我们将会通过源代码和应用配置的不断改进来解决安全审计人员提出的所有问题(甚至更多),同时会对我们应用的安全性树立信心。

                   使用Spring Security 3,我们将会通过以下的变化来提高应用的安全性:

<!--[if !supportLists]-->l  <!--[endif]-->细分系统的用户类别;

<!--[if !supportLists]-->l  <!--[endif]-->为用户的角色授予不同级别的权限;

<!--[if !supportLists]-->l  <!--[endif]-->为不同的用户类别授予不同的角色;

<!--[if !supportLists]-->l  <!--[endif]-->为应用全局的资源使用认证规则;

<!--[if !supportLists]-->l  <!--[endif]-->为应用所有层的结构使用授权规则;

<!--[if !supportLists]-->l  <!--[endif]-->阻止常用的攻击手段以控制或窃取一个用户的session

为什么使用Spring Security

Spring Security的存在填补了众多java第三方类库的一个空白,正如Spring框架第一次出现时那样。一些业界的标注如JAASJava EE Security确实提供了一些方式来解决认证和授权问题,但是Spring Security是一个胜出者,因为它以一种简明和合理的方式封装了各个层的安全解决方案。

除此以外,Spring Security提供了与很多通用企业认证系统的内置集成支持。所以,对开发者来说,它通过很少的努力就能适应绝大多数的场景。

因为没有任何一款主流的框架与之匹敌,所以它被广泛的使用。

小结

                  在本章中,我们:

<!--[if !supportLists]-->l  <!--[endif]-->检查了一个不安全的web工程的风险点;

<!--[if !supportLists]-->l  <!--[endif]-->查看了示例在线商务应用的基本架构;

<!--[if !supportLists]-->l  <!--[endif]-->讨论了使示例工程安全的策略。

在第二章中,我们将会介绍Spring Security的整体架构,主要侧重于其如何扩展和配置以支持我们的应用的需要。

 

 

  • 大小: 30.2 KB
  • 大小: 27.2 KB
16
0
分享到:
评论
6 楼 布拉君君 2014-11-10  
每章节都留个脚步
5 楼 lei_jiang0814 2014-06-12  
谢谢你啊,非常感谢
4 楼 wjp2072 2012-10-20  
学习
3 楼 lintghi 2012-06-08  
2 楼 w6513017 2012-06-05  
碉堡了!!!有木有!!!!!
1 楼 frederick_hai 2011-12-28  
每章都必顶你!哈哈!

相关推荐

    springSecurity3中文文档

    第二章:springsecurity起步 第三章:增强用户体验 第四章:凭证安全存储 第五章:精确的访问控制 第六章:高级配置和扩展 第七章:访问控制列表(ACL) 第八章:对OpenID开放 第九章:LDAP目录服务 第十章:使用...

    Spring攻略PDF版

    因为上传大小的限制,分为两部分上传,这是第二部分,第一部分会在评论中给出链接 绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念  第1章 ...

    Spring攻略中文版PDF

    因为上传大小的限制,分为两部分上传,这是第一部分,第二部分会在评论中给出链接 绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念  第1章 ...

    Spring攻略英文版(附带源码)

     第2章 Spring简介   2.1 Spring Framework   2.1.1 Spring的模块介绍   2.1.2 Spring的发布版本   2.1.3 Spring的项目   2.2 安装Spring Framework   2.2.1 问题描述   2.2.2 解决方案   ...

    security:Spring Security 开发安全的REST服务 —— JoJozhai

    第2章 开始开发 第3章 使用Spring MVC开发RESTful API 3-4 用户创建请求 3-5 修改和删除请求 3-6 服务异常处理 3-7 使用切片拦截REST服务 3-8 使用Filter和Interceptor拦截REST服务 3-9 使用REST方式处理文件...

    Spring Security3 张卫滨(译)

    第一章 一个不安全应用的剖析 ........................................................................................... 8 安全审计........................................................................

    Spring攻略(第二版 中文高清版).part1

    第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 解决方案 59 2.2.3...

    Spring攻略(第二版 中文高清版).part2

    第2章 高级Spring IoC容器 57 2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 解决方案 59 2.2.3...

    Spring in Action(第2版)中文版

    第一部分spring的核心 第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结...

    Spring in Action(第二版 中文高清版).part2

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP...

    Spring in Action(第二版 中文高清版).part1

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP...

    springCloud

    一 服务启动 此项目集成了:Feign,Spring Cloud Bus,hystrix,swagger-ui,zuul-filter,配置中心功能 ... Fallbacks可以组成链式结构,所以,最底层调用其它业务服务的第一个Fallback返回静态数据.

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    第2 章 Spring 常用配置 30 2.1 Bean 的Scope 30 2.1.1 点睛 30 2.1.2 示例 31 2.2 Spring EL 和资源调用. 33 2.2.1 点睛 33 2.2.2 示例 33 2.3 Bean 的初始化和销毁 37 2.3.1 点睛 37 2.3.2 演示 38 2.4 Profile 40...

    spring-security-demo:《Spring安全实战》原始码

    本书出版的时候,考虑到前面章节的二进制代码简单,原始便只提供了“单点登录与CAS”和“ Spring Security OAuth”两章,随后经过一些热心读者的反馈,才使得二进制本身简单复杂都应该完整提供,但目前Spring ...

    JavaEE开发的颠覆者 Spring Boot实战,多个地址免费下载,

    JavaEE开发的颠覆者 Spring Boot实战,多个地址免费下载,第一部分 点睛Spring 4.x 第1 章 Spring 基础 ..........................................2 1.1 Spring 概述 ................................................

    spring boot 项目代码,直接启动本人编写的,里面包含PPT下载地址

    spring boot 项目代码,直接启动,第一部分 点睛Spring 4.x 第1 章 Spring 基础 ..........................................2 1.1 Spring 概述 ............................................. 2 1.2 Spring 项目...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    第2 章 Spring 常用配置 30 2.1 Bean 的Scope 30 2.1.1 点睛 30 2.1.2 示例 31 2.2 Spring EL 和资源调用. 33 2.2.1 点睛 33 2.2.2 示例 33 2.3 Bean 的初始化和销毁 37 2.3.1 点睛 37 2.3.2 演示 38 2.4 Profile 40...

    Spring Boot带前后端 渐进式开发企业级博客系统

    第2章 开启 Spring Boot 的第一个 Web 项目 通过 Spring Initializr 来快速初始化一个 Spring Boot 原型,方便学员来极速体验Spring Boot。 本课程也将会采用Gradle作为项目管理工具,让学员掌握最前瞻的构建工具...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    第2 章 Spring 常用配置 30 2.1 Bean 的Scope 30 2.1.1 点睛 30 2.1.2 示例 31 2.2 Spring EL 和资源调用. 33 2.2.1 点睛 33 2.2.2 示例 33 2.3 Bean 的初始化和销毁 37 2.3.1 点睛 37 2.3.2 演示 38 2.4 Profile 40...

    SpringBoot最全企业级博客前后端视频教程

    第2章 开启 Spring Boot 的第一个 Web 项目 2-1 -初始化第一个Web项目 2-2 -用Gradle编译项目 2-3 -探索项目 第3章 一个Hello World项目 3-1 -编写项目构建信息 3-2 -自定义存储库,加速构建 3-3 -编写程序...

Global site tag (gtag.js) - Google Analytics