- 浏览: 304894 次
文章分类
最新评论
-
流年末年:
那四个参数还是没看懂.....能不能解释下showPassst ...
我写的密码强度验证方法(原创) -
kingcs2008:
// 验证pws.jsshowPassstrength(&qu ...
我写的密码强度验证方法(原创) -
h957355152:
请问博主这个怎么用呢?我直接放到jsp里面调用showPass ...
我写的密码强度验证方法(原创) -
qq_15138059:
我写的全国省市县三级联动菜单,拿出来和大家分享了(原创) -
valenon:
评论呢?从MAIL FROM命令开始貌似就出错了:500 Er ...
如何发送伪造的电子邮件
应用所使用的技术
我们使用了一些每个 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-security3 配置和使用(二)承上
2011-12-22 06:42 10442、xml配置,配置内容如下: Xml代码 ... -
spring-security3 配置和使用 (一)(转载)
2011-12-22 06:43 935最近项目中要使用到spring-security,可能研究 ... -
SpringSecurity3.X--一个简单实现(转载)
2011-12-22 06:43 2668作者对springsecurity研究不深,算是个初学者吧,最 ... -
SpringSecurity3.X--验证码(转载)
2011-12-22 06:44 1057一般来说,登录时都会要求用户输入验证码,以防止恶意登录。 可 ... -
SpringSecurity3.X--前台与后台登录认证(转载)
2011-12-23 06:33 3447不过一般我们在管理系统时都会分前台与后台,也就是说,前台与后台 ... -
SpringSecurity3.X--remember-me(转载)
2011-12-22 06:44 1740笔者在SpringSecurity中配置remember-me ... -
《Spring Security3》第六章第七部分翻译(认证事件处理与小结)
2011-12-23 06:34 1341认证事件处理 ... -
《Spring Security3》第六章第六部分翻译(Spring Security基于bean的高级配置)
2011-12-23 06:34 1054Spring Security 基于bean 的高级配 ... -
《Spring Security3》第六章第五部分翻译(手动配置Spring Security设施的bean)(转载)
2011-12-23 06:34 1009手动配置Spring Security 设施的be ... -
《Spring Security3》第六章第四部分翻译(异常处理)(转载)
2011-12-23 06:34 1235理解和配置异常处理 ... -
《Spring Security3》第六章第三部分翻译(Session的管理和并发)(转载)
2011-12-24 10:20 4227Session 的管理和并发 ... -
《Spring Security3》第六章第二部分翻译(自定义AuthenticationProvider)(转载)
2011-12-24 10:21 1514实现自定义的 AuthenticationProvide ... -
《Spring Security3》第六章第一部分翻译(自定义安全过滤器)(转载)
2011-12-24 10:21 1117第六章 高级配置和扩展 到目前为止,我 ... -
《Spring Security3》第五章第四部分翻译(方法安全的高级知识和小结)(转载)
2011-12-24 10:22 1051方法安全的高级知 ... -
《Spring Security3》第五章第三部分翻译(保护业务层)
2011-12-24 10:22 877保护业务层 到目前为止,在 ... -
《Spring Security3》第五章第二部分翻译下(实现授权精确控制的方法——页面级权限)(转载)
2011-12-25 00:47 1025使用控制器逻辑进行有条件渲染内容 ... -
《Spring Security3》第五章第二部分翻译上(实现授权精确控制的方法——页面级权限)(转载)
2011-12-25 00:47 959实现授权精确控制的方法 精确的授权指的是基于用 ... -
《Spring Security3》第五章第一部分翻译(重新思考应用功能和安全) (转载)
2011-12-25 00:47 948第五章 精确的 ... -
《Spring Security3》第四章第四部分翻译(Remember me后台存储和SSL)(转载)
2011-12-25 00:47 1248将 Remember me 功能 ... -
《Spring Security3》第四章第三部分翻译下(密码加salt)(转载)
2011-12-25 00:48 1801你是否愿意在密码上添加点salt ? 如果安 ...
相关推荐
### 第一章:Spring Security3入门 该章节分为两个部分,介绍了Spring Security3的基础概念,包括如何设置安全上下文、理解Spring Security的架构以及如何使用Spring Security进行基本的认证和授权。 ### 第二章:...
《Spring Security3》第二章第三部分的翻译下篇主要涵盖了Spring Security的核心概念和技术,这部分内容是深入理解Spring Security架构和实现安全控制的关键。在本章节中,我们将详细探讨以下几个核心知识点: 1. *...
第二章:springsecurity起步 第三章:增强用户体验 第四章:凭证安全存储 第五章:精确的访问控制 第六章:高级配置和扩展 第七章:访问控制列表(ACL) 第八章:对OpenID开放 第九章:LDAP目录服务 第十章:使用...
#### 第一章:一个不安全应用的剖析 **安全审计** - **目的**:识别系统中的安全隐患,并评估安全措施的有效性。 - **过程**:通过模拟攻击来测试系统的安全性,分析日志记录,评估现有安全策略。 **样例应用简介*...
《Spring Security3》第四章第四部分主要探讨了Remember me服务的后台存储机制以及如何结合SSL(Secure Sockets Layer)来增强应用的安全性。这一部分的知识点涵盖了Spring Security中Remember me的功能,用户身份...
在课程中,新增的第10+11章可能涵盖了Spring Security与OAuth2的深度整合,这包括: 1. 如何使用Spring Security作为OAuth2的授权服务器,实现用户登录验证和令牌发放。 2. 客户端注册和认证:如何在Spring ...
第三章介绍了如何构建Spring Security工程。在创建项目时,可以通过IDE或者Maven命令创建新的Maven项目。在创建项目时,需要填写项目名称、groupId、artifactId等信息,并选择合适的Maven版本。在项目的pom.xml文件...
Spring Security 是一个强大的和高度可定制的身份验证和...总的来说,Spring Security 3.x第五章的实例将帮助开发者深入理解这个框架的使用,通过具体的代码示例来实践安全性配置,从而更好地保护他们的Spring应用。
- 第2章:介绍了Spring Security的概况,可能包括了Spring Security的基本功能、特性以及它如何帮助开发者保护应用程序。 - 第3章:Spring Security架构与设计,这一章节着重讲述Spring Security的内部架构和设计...
### 第一章:一个不安全应用的剖析 本章节通过分析一个不安全的应用案例,引出了安全审计的重要性,并对Spring Security的应用背景进行了介绍。 - **安全审计**:介绍了如何通过日志记录等方式来进行安全审计,以...
2. **SpringSecurity**:SpringSecurity是一个用于保护Web应用的安全框架,提供了身份验证、授权等功能。它通过一系列拦截器对HTTP请求进行过滤,确保只有经过认证和授权的用户才能访问特定资源。在这个项目中,...
#### 第一章:一个不安全应用的剖析 - **安全审计**:介绍如何通过安全审计来发现系统中的安全漏洞,并解释审计的重要性。 - **关于样例应用**:本章节以JBCPPets应用为例,深入分析其架构和技术栈。 - **JBCPPets...
- **第2章:使用数据库管理用户权限** - **修改配置文件:** 更新Spring Security的配置文件,使其能够从数据库中读取用户信息和权限数据。 - **数据库表结构:** 设计并创建数据库表来存储用户信息和权限数据。 ...
第一章:安全的范围(The Scope of Security) - 安全基础:介绍安全的基本概念,包括认证(Authentication)、授权(Authorization)、非功能特性(Non-Functional Properties)如机密性、完整性和可用性。 - 安全...
#### 第一章:一个不安全应用的剖析 **安全审计** - **目的**:通过安全审计来识别应用程序中存在的潜在安全风险。 - **流程**: - **审查应用程序结构**:了解应用程序的整体架构、使用的框架和技术栈。 - **...