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

978-7-115-40371-1
作者: 【美】Fred Long(弗雷德•朗)Dhruv Mohindra(德鲁•莫欣达)Robert C. Seacord(罗伯特 C.西科德)Dean F. Sutherland(迪恩 F.萨瑟兰)David Svoboda(大卫•斯沃博达)
译者: 刘先宁尤青松
编辑: 杨海玲

图书目录:

目录

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

详情

本书把那些不必列入Java安全编码标准但是同样会导致系统不可靠或不安全的Java编码实践整理了出来,并为这些糟糕的实践提供了相应的文档和警告,以及合规解决方案。读者可以将本书作为Java安全方面的工具书,根据自己的需要找到自己感兴趣的规则进行阅读和理解,也可以系统地了解Java安全规则,增强对Java安全特性、语言使用、运行环境特性的理解。

图书摘要

相关图书

DirectX 12 3D 游戏开发实战
DirectX 12 3D 游戏开发实战
Python和NLTK自然语言处理
Python和NLTK自然语言处理
scikit-learn机器学习(第2版)
scikit-learn机器学习(第2版)
C++编程自学宝典
C++编程自学宝典
数据科学实战手册(第2版)
数据科学实战手册(第2版)
Scala实用指南
Scala实用指南

相关文章

相关课程