Java编码指南 编写安全可靠程序的75条建议.pdf

Java编码指南 编写安全可靠程序的75条建议.pdf
 

书籍描述

内容简介
《Java编码指南 编写安全可靠程序的75条建议》是《Java安全编码标准》一书的扩展,书中把那些不必列入Java安全编码标准但是同样会导致系统不可靠或不安全的Java编码实践整理了出来,并为这些糟糕的实践提供了相应的文档和警告,以及合规解决方案。读者可以将本书作为Java安全方面的工具书,根据自己的需要,找到自己感兴趣的规则进行阅读和理解,或者在实际开发中遇到安全问题时,根据书中列出的大致分类对规则进行索引和阅读,也可以通读全书的所有规则,系统地了解Java安全规则,增强对Java安全特性、语言使用、运行环境特性的理解。

编辑推荐
- “Java之父”James A. Gosling作序推荐
- Java领域 知名专家撰写的卓越著指南
- 所有Java开发人员必读之作

全世界有很多组织依靠Java代码来执行关键任务,因此这些任务的代码必须可靠、健壮、运行快、可维护,并且安全。本书汇聚了专家们提出的编码指南、建议以及代码示例来帮助大家满足这些需求。

《Java编码指南 编写安全可靠程序的75条建议》由《The CERT Oracle Secure Coding Standard for Java?》一书的几位作者合著,书中的编码指南对专家安全建议进行了扩展,阐述了更多有价值的新内容。

《Java编码指南 编写安全可靠程序的75条建议》为读者提供了75条编码指南,每一条指南的描述结构都是一致的、直观的。每一条指南都有遵从性的要求,大多数指南还提供了违规代码示例和合规解决方案。作者还指明了每条指南的适用场景,并提供了了解更多详细信息的参考资源。

《Java编码指南 编写安全可靠程序的75条建议》体现了Java安全领域的全新研究成果,提供了很多全新的防护技巧,既能防护故意的攻击,也能防护一些意外导致的事件。本书还提供了构建可靠软件的绝佳实践,甚至还用一整章描述了一些常见的会导致代码不完美的误解。

媒体推荐
“本书强调了这样一个事实:所谓的安全性其实不是一个特性,而是一种针对所有的潜在的不安全因素都予以充分考虑的态度。安全性应该被持续贯穿在每一位软件工程师的设计思考过程中。它的基础是一系列的编码指南。本书特别精彩的地方就是这些编码指南背后的微妙之处。”
——James A. Gosling,“Java之父”

“所有Java开发人员的必读之作……每一位开发者都有责任让自己写的代码没有明显的安全漏洞。本书提供了一些非常实际的指导来帮助Java开发人员以安全、可靠、可维护性为目标来实现想要的功能。”
——Mary Ann Davidson,Oracle公司首席安全官

作者简介
作者:[美]弗雷德·朗(Fred Long)德鲁·莫欣达(Dhruv Mohindra)罗伯特 C.西科德(Robert C. Seacord)迪恩 F.萨瑟兰(Dean F. Sutherland)* 译者:刘先宁 尤青松
作者简介
Fred Long 英国Aberystwyth大学计算机科学系的高级讲师,自1992年起一直担任软件工程研究所(Software Engineering Institute)的客座科学家。

Dhruv Mohindra 印度Persistent Systems有限公司安全实践小组的技术领导,为金融、电信、健康领域的很多公司提供咨询服务。
Robert C. Seacord 出版过多本软件安全与软件工程方面的书籍,是CERT安全编码倡议小组的技术经理,另外他还在卡内基-梅隆大学教计算机科学。

Dean F. Sutherland CERT高级软件安全工程师,之前是Tartan公司技术组的高级成员,他在Tartan公司主要负责开发优化编译器。

David Svoboda CERT软件安全工程师,是多个CMU项目的主要开发者。


译者简介

译者简介
刘先宁 ThoughtWorks高级咨询师,长期从事一线软件开发工作,对Java、面向对象、敏捷方法论都有较深理解。其译作还包括《HTML5移动Web开发实战》。

尤青松 ThoughtWorks咨询师,在敏捷软件交付团队中担任技术领导人,尤其对Java企业软件开发及其安全编程有较深理解。

目录
目录
第1章 安全 1
指南1:限制敏感数据的生命周期 1
指南2:不要在客户端存储未经加密的敏感数据 5
指南3:为敏感可变类提供不可修改的包装器 10
指南4:确保安全敏感方法被调用时参数经过验证 12
指南5:防止任意文件上传 14
指南6:正确地编码或转义输出 17
指南7:防止代码注入 22
指南8:防止XPath注入 25
指南9:防止LDAP注入 30
指南10:不要使用clone()方法来复制不可信的方法参数 34
指南11:不要使用Object.equals()来比较密钥 37
指南12:不要使用不安全的弱加密算法 39
指南13:使用散列函数存储密码 41
指南14:确保SecureRandom正确地选择随机数种子 46
指南15:不要依赖可以被不可信代码覆盖的方法 47
指南16:避免授予过多特权 55
指南17:最小化特权代码 59
指南18:不要将使用降低安全性检查的方法暴露给不可信代码 61
指南19:对细粒度的安全定义自定义安全权限 70
指南20:使用安全管理器创建一个安全的沙盒 74
指南21:不要让不可信代码误用回调方法的特权 78
第2章 防御式编程 85
指南22:最小化变量的作用域 85
指南23:最小化@SuppressWarnings注解的作用域 88
指南24:最小化类及其成员的可访问性 91
指南25:文档化代码的线程安全性 96
指南26:为方法的结果值提供反馈 103
指南27:使用多个文件属性识别文件 106
指南28:不要赋予枚举常量的序号任何特殊意义 114
指南29:注意数字提升行为 116
指南30:对可变参数的类型做编译时类型检查 121
指南31:不要把其值在以后版本里可能会发生变化的常量设置为public final 124
指南32:避免包之间的循环依赖 127
指南33:使用用户自定义的异常而非宽泛的异常类型 130
指南34:尽量从系统错误中优雅恢复 133
指南35:发布接口前请谨慎设计 135
指南36:编写对垃圾收集机制友好的代码 138
第3章 可靠性 142
指南37:不要在子作用域里遮蔽或者掩盖标识符 142
指南38:不要在一个声明里声明多个变量 145
指南39:在程序逻辑中用有意义的符号常量代表文字值 148
指南40:在常量定义中恰当地表示相互之间的关系 153
指南41:对于返回数组或者集合的方法,用返回一个空数组或者集合来替代返回一个空值 154
指南42:只在异常的情况下使用异常 157
指南43:转义 245
指南72:不要使用重载的方法来区分运行时类型 248
指南73:不要弄混引用的不可变性和对象的不可变性 251
指南74:谨慎使用序列化方法writeUnshared()和readUnshared() 257
指南75:不要试图通过把

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多