第1部分 J2EE体系结构和技术简介 3
第1章 Java基础:安全性起步 3
1.1 Java的过去和现在 4
1.2 Java的语言体系结构 5
1.2.1 Java虚拟机 5
1.2.2 被解释的语言——Java字节码 5
1.2.3 Java的类加载器和内置安全性 6
1.2.4 其他语言特性 6
1.3 Java的安全体系结构 7
1.3.1 保护域 7
1.3.2 Java类加载的安全控制 10
1.3.3 Java的权限 11
1.4 Java的安全策略 12
1.4.1 Java安全属性文件 13
1.4.2 Java安全策略文件 13
1.5 Java的principal和subject 17
1.4.3 安全管理器的检查 17
1.6 小结 18
第2章 JAAS、JCE和JSSE简介 19
2.1 Java的认证和授权服务(JAAS) 20
2.1.1 JAAS的体系结构 20
2.1.2 JAAS的认证 22
2.1.3 JAAS的授权 33
2.2.1 加密基础 36
2.2 Java加密 36
2.2.2 Java密码系统扩展(JCE) 38
2.2.3 keytool实用程序 41
2.3 Java安全套接字扩展(JSSE) 42
2.3.1 SSL基础 42
2.3.2 库和证书的安装 43
2.3.3 JSSE演示程序 44
2.4 保护JAR文件 50
2.4.1 jarsigner实用程序 50
2.4.2 封装指令 50
2.5 小结 51
第3章 J2EE的体系结构与安全 53
3.1 中间件和分布式软件组件 54
3.1.1 中间件开发 54
3.1.2 多层应用开发 55
3.1.3 多层环境 56
3.1.4 J2EE多层技术 57
3.2 Web层组件:servlet和JSP 58
3.2.1 servlet 58
3.2.2 JSP 61
3.2.3 JSP的使用 63
3.3 业务层组件:EJB 64
3.3.1 EJB容器提供的服务 64
3.3.2 EJB的类型 65
3.3.3 EJB的部署 67
3.3.4 J2EE的开发角色 68
3.3.5 EJB的开发 70
3.4 其他的J2EE API 76
3.5 EJB安全体系结构 77
3.5.1 Principal和角色 77
3.5.2 声明性安全机制和程序化安全机制 78
3.5.3 系统级安全性 78
3.6 表现层的安全 79
3.7 业务层的安全 81
3.7.1 安全角色定义 81
3.7.2 角色的映射 82
3.7.3 分配principal到角色 83
3.7.4 资源的安全 84
3.8 小结 85
第2部分 Java应用和网络安全 89
第4章 使用加密和认证保护应用程序 89
4.1 应用程序的安全性:过程 90
4.1.1 系统级与应用级的安全 90
4.1.2 应用级安全技术 91
4.2 本地存储数据的危险性 92
4.3 小结 119
第5章 软件盗版和代码授权方案 121
5.1 代码滥用的危险 122
5.1.1 另一个授权策略 131
5.1.2 密钥存储 132
5.2 小结 140
第6章 字节码的暴露 141
6.1 逆向工程的危险性 142
6.2 嵌入串的危险性 160
6.3 小结 161
第7章 攻击Java客户/服务器应用:另一个可攻击的层 163
7.1 客户/服务器实现 164
7.2 客户/服务器结构面临的威胁 165
7.2.1 数据库防护:应用数据库安全 166
7.2.2 保护数据库连接 169
7.2.3 保护客户层 181
7.2.4 保护基于applet的客户 192
7.2.5 保护基于WebStart的客户 204
7.3 小结 209
第8章 Java网络应用:对安全缺陷的潜在攻击 211
8.1 RMI的危险 212
8.1.1 原始的RMI应用 212
8.1.2 加密账号和余额 220
8.1.3 在客户端和服务器之间使用SSL连接 227
8.1.4 实现询问/响应认证 231
8.1.5 使用认证的信道 234
8.2 远程加载类和JAR文件的危险 247
8.3 小结 249
第3部分 Web层和业务层的J2EE安全性 253
第9章 开发Java Web层组件 253
9.1 示例应用:启用Web 255
9.2 小结 288
第10章 动摇其基础:Web容器的优缺点 289
10.1.1 允许浏览目录 290
10.1.2 invoker servlet 291
10.1.3 窃取会话 295
10.1.4 产生一个服务器密钥 298
10.1.5 在Tomcat中启用HTTPS 299
10.1.6 测试安装 299
10.1.7 增加传输保证 300
10.1.8 客户证书认证 301
10.1.9 配置Tomcat使用SSL客户认证 302
10.1.10 使用客户端证书的容器认证 303
10.1.11 处理重叠的应用角色 308
10.2 小结 309
第11章 Java Web服务的安全机制 311
11.1 Java中的Web服务 312
11.1.1 Web服务技术 313
11.1.2 Web服务开发包 314
11.2 使用Web服务的应用程序实现 315
11.2.1 退休程序Web服务组件:服务器端 316
11.2.2 退休程序Web服务组件:客户端 318
11.3 Web服务应用的弱点 321
11.3.1 请求SSL连接 323
11.3.2 实现HTTP认证 328
11.3.3 禁用WSDL分发 330
11.3.4 启用程序授权 331
11.3.5 作为上下文参数传递数据库口令 334
11.4 Web服务的工作流安全性 336
11.5 Web服务安全的未来 339
11.5.1 SOAP安全扩展:数字签名 340
11.5.2 WS-Security 340
11.6 小结 341
第12章 EJB:业务层的安全 343
12.1 EJB应用实现 344
12.1.1 EJB的持续服务 345
12.1.2 获取和设置余额方法 346
12.1.3 Bean 347
12.2 EJB应用的弱点 350
12.3 使用消息驱动的bean时常见的缺陷 360
12.4 小结 369