1 前言

2016-06-11 00:21:38 4,283

声明:本文档基于Spring Security4.1的官方文档进行翻译,在官方文档的基础之上,添加一些源码解析的内容。因为有源码解读部分的内容,以及本人对内容安排原因,教程的顺序可能与官方文档略微有所不同。

官方网址:http://projects.spring.io/spring-security/

文档地址:http://docs.spring.io/spring-security/site/docs/4.1.x/reference/htmlsingle/

QQ截图20160607212133.png

Spring Security为J2EE应用提供了一个全面的安全解决方案。当你在阅读这个教程的时,你会发现,我们尝试向你展示的是一个有用的和高度可配置的安全系统。

安全是一个不断演进的目标,追求一个全面的、系统级别的安全方案是非常重要的。站在安全领域的角度,我们鼓励分层的概念,每一层都只管理自己职责范围内的安全问题,每一层的安全机制越严格,我们的应用就越健壮、越安全。

1、在最底层,我们需要处理传输层安全和系统识别,从而避免中间人(man-in-the-middle )攻击。

2、接着我们会使用防火墙,可能会联合VPN或者IP安全机制来保证只有被授权的系统才能进行连接。

3、在企业环境中,我们需要部署一个DMZ( demilitarized zone )服务来隔离对外提供访问的接口的服务器与内部数据库和应用服务器。

4、我们的操作系统也扮演了安全中的一环,例如使用不具有特定权限的用户运行进程,限制用户最大可以操作的文件数量等。操作系统通常也会配置自己的防火墙。

5、我们可能还会尝试使阻止DDOS( Distributed DenialofService)分布式拒绝服务和暴力破解攻击(brute force attacks )。一个入侵检测系统对于攻击的监控和响应是非常有用的,可以帮助我们实时的拒绝某些TPC/IP地址的访问。

6、从更高的层面即JVM的层面来说,我们可以通过配置最小化一个Java类可以具有的权限(译者注:通过JAVA_HOME/jre/lib/security/java.policy文件进行配置)

7、最后我们在应用层面添加一些领域特定的安全配置。

Spring Security可以让最后一点,即应用相关的安全( application security )设置变得更加容易

当然,我们需要适当的处理上面的提到的每一层的安全机制,并考虑一些管理方面的问题。以下列出了一些需要考虑的管理因素(并不是所有)如: personnel vetting(人工审核)、审计、灾难恢复,性能benchmark、负载监控、日志聚集、应急响应步骤等( incident response procedures )。

由于Spring Security聚焦于应用级别的安全,你会发现处理不同领域的应用会有不同的安全需求。一个银行应用和一个电子商务应用就会有着不同的安全需求。不同的应用需要不同的安全特性,让应用层安全充满了挑战。

第二部分"入门",作为学习Spring Security的开始完全足够了。这一章会向你介绍SpringSecurity框架和基于命名空间的配置系统,以便你能快速上手。要想知道更多Spring Security如何工作的知识,以及可能会使用到的类,需要阅读第三部分"架构和实现"。

本教程的剩余部分内容将按照传统的参考手册的方式进行组织,这样设计是为了让你掌握必要的基础知识。我们同样建议你尽可能的掌握一些应用中可能会遇到的安全问题。Spring Security不是可以解决所有的安全问题的万能药。从应用开始设计的时候就应该考虑安全方面的问题,尝试进行改造并不是好的想法。特别的,如果你正在构建一个WEB应用,你应该知道一些潜在的薄弱点,例如:跨站脚本攻击(cross-site scripting,CSS又叫XSS攻击)、跨站请求伪造(cross-site request-forgery)、session劫持(session-hijacking),这些问题在应用设计的一开始就应该考虑。OWASP(http://www.owasp.org/)站点上维护了web应用最容易受到攻击的10个薄弱点,并且有很多有用的参考文档。

我们希望你发现这个参考指南的确是有用的,并且希望得到你的反馈和建议。

最后,欢迎来到Spring Security社区。