- 浏览: 308365 次
-
最新评论
-
流年末年:
那四个参数还是没看懂.....能不能解释下showPassst ...
我写的密码强度验证方法(原创) -
kingcs2008:
// 验证pws.jsshowPassstrength(&qu ...
我写的密码强度验证方法(原创) -
h957355152:
请问博主这个怎么用呢?我直接放到jsp里面调用showPass ...
我写的密码强度验证方法(原创) -
qq_15138059:
我写的全国省市县三级联动菜单,拿出来和大家分享了(原创) -
valenon:
评论呢?从MAIL FROM命令开始貌似就出错了:500 Er ...
如何发送伪造的电子邮件
文章列表
第三章
增强用户体验
在本章中,我们将对
JBCP Pets
在线商店增加一些功能,这些新功能能够为用户提供更愉悦和可用的用户体验,同时提供一些对安全系统很重要的功能。
在本章中,我们将要:
l
按照你的意愿自定义登录和退出页面,并将它们与标准的
Spring web MVC
的控制器相关联;
l
使用
remember me
功能为用户提供便利,并理解其背后的安全含义;
l
构建用户账号管理功能,包括修改密码以及密码遗忘找回功能。
...
使用
Spring
表达式语言配置访问控制
基于角色标准投票机制的标准实现是使用
RoleVoter
,还有一种替代方法可用来定义语法复杂的投票规则即使用
Spring
表达式语言(
SpEL
)。要实现这一功能的直接方式是在
<http>
配置元素上添加
use-expressions
属性:
<http auto-config="true"
use-expressions="true">
添加后将要修改用来进行拦截器规则声明的
...
请求是怎样被授权的?
在
Spring Security
的默认过滤器链中,最后一个
servelt
过滤器是
FilterSecurityInterceptor
,它的作用是判断一个特定的请求是被允许还是被拒绝。在
FilterSecurityInterceptor
被触发的时候,安全实体已经经过了认证,所以系统知道他们是合法的用户。(其实也有可能是匿名的用户,译者注)。请记住的一点是,
Authentication
提供了一个方法(
(List<GrantedAuthority>
getAuthorities()
),将会返回当前安 ...
安全的复杂之处:安全
web
请求的架构
借助于
Spring
Security
的强大基础配置功能以及内置的认证功能,我们在前面讲述的三步配置是很快就能完成的;它们的使用是通过添加
auto-config
属性和
http
元素实现的。
但不幸的是,应用实现的考量、架构的限制以及基础设施集成的要求可能使你的
Spring Security
实现远较这个简单的配置所提供的复杂。很多用户一使用比基本配置复杂的功能就会遇到麻烦,那是因为他们不了解这个产品的架构以及各个元素是如何协同工作以实现一个整体的。 ...
三步之内使我们的应用变得安全
尽管
Spring
Security
的配置可能会很难,但是它的作者是相当为我们着想的,因为他们为我们提供了一种简单的机制来使用它很多的功能并可以此作为起点。以这个为起点,额外的配置能够实现应用的分层次详细的安全控制。
我们将从我们不安全的在线商店开始,并且使用三步操作将它变成一个拥有基本用户名和密码安全认证的站点。这个认证仅仅是为了阐述使用
Spring Security
使我们应用变得安全的步骤,所以你可能会发现这样的方式会有明显不足,这将会引领我们在以后的配置中不断进行改良。
...
第二章
Spring Security
起步
在本章中,我们将要学习
Spring
Security
背后的核心理念,包括重要的术语和产品架构。我们将会关注配置
Spring Security
的一些方式以及对应用的作用。
最重要的是为了解决工作中的问题,我们要开始使得
JBCP Pets
的在线商店系统变得安全。我们将会通过分析和理解认证如何保护在线商店的适当区域来解决在第一章:一个不安全应用的剖析
中审计人员发现的第一个问题,即缺少
URL
保护和统一的认证造成的权限扩散
。
在本章的内容中,我们将会涉及:
l
...
应用所使用的技术
我们使用了一些每个
Spring
程序员都会遇到的技术和工具,以使得示例应用很容易的运行起来。尽管如此,我们还是提供了补充的起步资料信息在附录:参考资料。
我们建立使用如下的
IDE
以提高开发的效率并使用本书的示例代码:
<!--[if !supportLists]-->l
<!--[endif]-->Eclipse 3.4
或
3.5 Java EE
版本可以在以下地址获得:
http://www.eclipse.org/downloads/
<!--[if !supportLi ...
第一章
一个不安全应用的剖析
毫无疑问,安全是任何一个写于
21
世纪的
web
工程中最重要的架构组件之一。在这样一个时代,计算机病毒、犯罪以及不合法的员工一直存在并且持续考验软件的安全性试图有所收益 ...
JdbcDaoImpl
的高级配置
JdbcDaoImpl
拥有众多的可配置选项使其可以在已存在的
schema
中使用,或对其功能进行更复杂地调整。在很多场景下,很可能我们只需调整内置
UserDetailsService
类的配置而不需要写自己的代码。
...
配置安全的密码
我们回忆第一章:一个不安全应用的剖析
中,审计人员认为密码以明文形式进行存储是最高优先级的安全风险。实际上,在任何安全系统中,密码安全都是保证已经经过认证的安全实体是真实可靠的重要方面。安全系统的设计人员必须保证密码存储时,任何恶意的用户想要进行破解都是非常困难的。
在数据库存储时,需要遵守以下的准则:
l
密码不能以明文的形式进行存储(简单文本);
l
用户提供的密码必须与数据库存储的密码进行比较;
l
密码不能应用户的请求提供(即使用户忘记了 ...
你是否愿意在密码上添加点salt
?
如果安全审计人员检查数据库中编码过的密码,在网站安全方面,他可能还会找到一些令其感到担心的地方。让我们查看一下存储的
admin
和
guest
用户的用户名和密码值:
用户名
明文密码
加密密码
admin
admin
7b2e9f54cdff413fcde01f330af6896c3cd7e6cd
guest
guest
2ac15cab107096305d0274c ...
将
Remember me
功能迁移至数据库
现在你可能会意识到我们
remember me
功能的实现,能够在应用重启前很好的使用,但在应用重启时用户的
session
会被丢失。这对用户来说会不太便利,他们不应该关心
JB ...
第五章
精确的访问控制
到目前为止,我们已经为
JBCP Pets
站点添加了用户友好的一些功能,包括自定义的登录页以及修改密码、
remember me
功能。
在本章中,我们将要学习规划应用安全的技术以及用户
/
...
实现授权精确控制的方法
精确的授权指的是基于用户特定的请求进行授权的应用功能特性。不同于我们在第二章:
Spring Security
起步、第三章增强用户体验和第四章凭证安全存储
中的粗粒度的授权,精确的授权一般指的是对页面中的部分进行选择性显示的功能,而不是限制访问一个完整的页面。现实世界中的应用将会花费可观的时间用在规划精确授权的细节上。
Spring
Security
为我们提供了两种方式来实现选择性显示的功能:
l
Spring Security
的
JSP
标签库允许通过标准的
JSP
标 ...
使用控制器逻辑进行有条件渲染内容
现在,让我们将刚刚用
<authorize>
标签实现的例子改成用
java
代码的方式。为了简洁起见,我们只实现一个例子,但实现基于控制器检查的其它例子是很简单直接的。
添加有条件显示的
Log In
链接
为了替代
Spring
Security
的
<authorize>
标签,我们假设在模型数据中有一个
Boolean
变量来标示是否显示显示“
Log in
”链接,而这个变量可以在视图上得到。在传统的
MVC ...