- 浏览: 446945 次
- 性别:
- 来自: 大连
博客专栏
-
《Spring Secur...
浏览量:379420
文章分类
最新评论
-
蒙奇君杰:
必须感谢一番!!!愿开源的态度为更多的人所拥有,所 认同!
关于对《Spring Security3》一书的翻译说明 -
601235723:
bbjavaeye 写道你好,有个问题请教一下我配了<b ...
《Spring Security3》第四章第一部分翻译下(自定义的UserDetailsService) -
bay0902:
中国互联网的脊梁
Spring Security 3全文下载 -
hdcustc:
项目源码下载 微博网盘里的那个依赖文件损坏了啊 能否提供个可 ...
Spring Security 3全文下载 -
i641878506:
楼主辛苦, 可以提供原书的原项目文件的下载么
Spring Security 3全文下载
应用所使用的技术
我们使用了一些每个Spring程序员都会遇到的技术和工具,以使得示例应用很容易的运行起来。尽管如此,我们还是提供了补充的起步资料信息在附录:参考资料。
我们建立使用如下的IDE以提高开发的效率并使用本书的示例代码:
<!--[if !supportLists]-->l <!--[endif]-->Eclipse 3.4或3.5 Java EE版本可以在以下地址获得:
http://www.eclipse.org/downloads/
<!--[if !supportLists]-->l <!--[endif]-->Spring IDE2.2(2.2.2或更高)可以在以下地址获得:http://springide.org/blog
在本书的示例和截图中,你会看到Eclipse和Spring IDE,所以我们建议你使用它们。
你可能希望使用免费的Spring Tool Suite(STS)Eclipse插件,它作为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 Maven的modules。不管你熟悉开发环境,我们希望你能够在阅读本书的时候能够运行示例代码。
另外,在阅读过程中,你可能会愿意去下载Spring 3和Spring 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框架第一次出现时那样。一些业界的标注如JAAS或Java EE Security确实提供了一些方式来解决认证和授权问题,但是Spring Security是一个胜出者,因为它以一种简明和合理的方式封装了各个层的安全解决方案。
除此以外,Spring Security提供了与很多通用企业认证系统的内置集成支持。所以,对开发者来说,它通过很少的努力就能适应绝大多数的场景。
因为没有任何一款主流的框架与之匹敌,所以它被广泛的使用。
小结
在本章中,我们:
<!--[if !supportLists]-->l <!--[endif]-->检查了一个不安全的web工程的风险点;
<!--[if !supportLists]-->l <!--[endif]-->查看了示例在线商务应用的基本架构;
<!--[if !supportLists]-->l <!--[endif]-->讨论了使示例工程安全的策略。
在第二章中,我们将会介绍Spring Security的整体架构,主要侧重于其如何扩展和配置以支持我们的应用的需要。
评论
发表评论
-
Spring Security 3全文下载
2012-03-15 20:31 20108本书已经翻译完成,提供给大家下载 以下地址为ITEYE的电子 ... -
《Spring Security3》附录翻译(参考资料)
2012-02-13 22:58 6414附录:参考材料 在本附录中, ... -
《Spring Security3》第十三章翻译(迁移到Spring Security 3)
2012-02-13 22:50 5187第十三章 迁移到Spring Security 3 ... -
《Spring Security3》第十二章翻译(Spring Security扩展)
2012-02-13 22:38 7794第十二章 Spring Security扩展 ... -
《Spring Security3》第十一章(客户端证书认证)第二部分翻译
2012-02-13 22:23 4761在Spring Security中配置客户端证书认证 ... -
《Spring Security3》第十一章(客户端证书认证)第一部分翻译
2012-02-13 22:00 6118第十一章 客户端证书认证(Client Cert ... -
《Spring Security3》第十章(CAS)第二部分翻译(CAS高级配置)
2012-01-19 13:07 8572高级CAS配置 ... -
《Spring Security3》第十章(CAS)第一部分翻译(CAS基本配置)
2012-01-19 12:54 12217第十章 使用中心认证服务(CAS)进行单点登录 ... -
《Spring Security3》第九章(LDAP)第三部分翻译(LDAP明确配置)
2012-01-19 12:44 6379明确的LDAP bean配置 ... -
《Spring Security3》第九章(LDAP)第二部分翻译(LDAP高级配置)
2012-01-19 12:36 7081LDAP的高级配置 一旦我们 ... -
《Spring Security3》第九章(LDAP)第一部分翻译(LDAP基本配置)
2012-01-19 12:22 6100第九章 LDAP目录服务 在本章中,我们 ... -
《Spring Security3》第八章第三部分翻译(属性交换)
2012-01-18 15:46 2871属性交换(Attribute Exchange) ... -
《Spring Security3》第八章第二部分翻译(OpenID用户的注册)
2012-01-18 13:39 5317OpenID用户的注册问 ... -
《Spring Security3》第八章第一部分翻译(OpenID与Spring Security)
2012-01-17 22:38 7498第八章 对OpenID开放 OpenID是 ... -
《Spring Security3》第七章第三部分翻译(ACL的注意事项)
2012-01-17 22:25 2652典型ACL部署所要考虑的事情 ... -
《Spring Security3》第七章第二部分翻译(高级ACL)(下)
2012-01-17 22:17 4139支持ACL的Spring表达式语言 SpEL对A ... -
《Spring Security3》第七章第二部分翻译(高级ACL)(上)
2012-01-10 22:59 4567高级ACL话题 一些高级的话 ... -
《Spring Security3》第七章第一部分翻译(访问控制列表ACL)
2011-12-30 22:02 9436第七章 访问控制列表(ACL) 在本章中, ... -
《Spring Security3》第六章第七部分翻译(认证事件处理与小结)
2011-11-22 22:37 5370认证事件处理 有一个重要的功能只能通 ... -
《Spring Security3》第六章第六部分翻译(Spring Security基于bean的高级配置)
2011-11-22 22:25 5385Spring Security基于bean的高级配置 ...
相关推荐
第二章:springsecurity起步 第三章:增强用户体验 第四章:凭证安全存储 第五章:精确的访问控制 第六章:高级配置和扩展 第七章:访问控制列表(ACL) 第八章:对OpenID开放 第九章:LDAP目录服务 第十章:使用...
因为上传大小的限制,分为两部分上传,这是第二部分,第一部分会在评论中给出链接 绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 ...
因为上传大小的限制,分为两部分上传,这是第一部分,第二部分会在评论中给出链接 绝对是spring攻略中文版第二版 Spring专家力作 理论与实践完美结合 问题描述→解决方案→实现方法 第一部分 核心概念 第1章 ...
第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 解决方案 ...
第2章 开始开发 第3章 使用Spring MVC开发RESTful API 3-4 用户创建请求 3-5 修改和删除请求 3-6 服务异常处理 3-7 使用切片拦截REST服务 3-8 使用Filter和Interceptor拦截REST服务 3-9 使用REST方式处理文件...
第一章 一个不安全应用的剖析 ........................................................................................... 8 安全审计........................................................................
第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...
第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的核心 第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的核心 第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的核心 第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...
一 服务启动 此项目集成了:Feign,Spring Cloud Bus,hystrix,swagger-ui,zuul-filter,配置中心功能 ... Fallbacks可以组成链式结构,所以,最底层调用其它业务服务的第一个Fallback返回静态数据.
第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...
本书出版的时候,考虑到前面章节的二进制代码简单,原始便只提供了“单点登录与CAS”和“ Spring Security OAuth”两章,随后经过一些热心读者的反馈,才使得二进制本身简单复杂都应该完整提供,但目前Spring ...
JavaEE开发的颠覆者 Spring Boot实战,多个地址免费下载,第一部分 点睛Spring 4.x 第1 章 Spring 基础 ..........................................2 1.1 Spring 概述 ................................................
spring boot 项目代码,直接启动,第一部分 点睛Spring 4.x 第1 章 Spring 基础 ..........................................2 1.1 Spring 概述 ............................................. 2 1.2 Spring 项目...
第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...
第2章 开启 Spring Boot 的第一个 Web 项目 通过 Spring Initializr 来快速初始化一个 Spring Boot 原型,方便学员来极速体验Spring Boot。 本课程也将会采用Gradle作为项目管理工具,让学员掌握最前瞻的构建工具...
第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...
第2章 开启 Spring Boot 的第一个 Web 项目 2-1 -初始化第一个Web项目 2-2 -用Gradle编译项目 2-3 -探索项目 第3章 一个Hello World项目 3-1 -编写项目构建信息 3-2 -自定义存储库,加速构建 3-3 -编写程序...