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

综合评级:
★★★★★

定价:
¥55.00

作者:
[美]弗雷德·朗(Fred Long)德鲁·莫欣达(Dhruv Mohindra 著

出版社:
人民邮电出版社

出版日期:
2015年12月

页数:
263

字数:
328000

ISBN:
9787115403711

书籍介绍

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

作者简介

作者简介

  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:不要试图通过把

课课家教育

未登录