华章程序员书库:Java安全编码标准

华章程序员书库:Java安全编码标准
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: , , , ,
2013-06
版次: 1
ISBN: 9787111428183
定价: 99.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 511页
58人买过
  •   《华章程序员书库:Java安全编码标准》是Java安全编码领域最权威、最全面、最详细的著作,Java之父JamesA.Gosling推荐。不仅从语言角度系统而详细地阐述Java安全编码的要素、标准、规范和最佳实践,而且从架构设计的角度分析了JavaAPI存在的设计缺陷和可能存在的安全风险,以及应对的策略和措施。可以将本书作为Java安全方面的工具书,根据自己的需要,找到自己感兴趣的规则进行阅读和理解,或者在实际开发中遇到安全问题时,根据书中列出的大致分类对规则进行索引和阅读,也可以通读全书的所有规则,系统地了解Java安全规则,增强对Java安全特性、语言使用、运行环境特性的理解。《华章程序员书库:Java安全编码标准》能指导Java软件工程师设计出高质量的、安全的、可靠的、强大的、有弹性的、可用性和可维护性高的软件系统。
      《华章程序员书库:Java安全编码标准》内容非常全面,包括基于JavaSE6平台的一系列应用于Java语言和类库的安全编码规则,并且对这一系列规则进行了分类,包括输入数据验证、声明和初始化、表达式、数值类型和操作、面向对象、方法使用、异常处理、可见性和原子性、锁、线程、输入输出、序列化、平台安全特性、Java运行环境等重要方面,对每一个方面所涉及的安全编码要素、规范和标准进行了详细阐释。 译者序

    前言
    致谢

    第1章概述
    1.1错位的信任
    1.2注入攻击
    1.3敏感数据泄露
    1.4效能泄露
    1.5拒绝服务
    1.6序列化
    1.7并发性、可见性和内存
    1.8最低权限原则
    1.9安全管理器
    1.10类装载器
    1.11小结

    第2章输入验证和数据净化(IDS)规则风险评估概要
    2.1IDS00-J净化穿越受信边界的非受信数据
    2.2IDS01-J验证前标准化字符串
    2.3IDS02-J在验证之前标准化路径名
    2.4IDS03-J不要记录未经净化的用户输入
    2.5IDS04-J限制传递给ZipInputStream的文件大小
    2.6IDS05-J使用ASCII字符集的子集作为文件名和路径名
    2.7IDS06-J从格式字符串中排除用户输入
    2.8IDS07-J不要向Runtime.exec方法传递非受信、未净化的数据
    2.9IDS08-J净化传递给正则表达式的非受信数据
    2.10DS09-J如果没有指定适当的locale,不要使用locale相关方法处理与locale相关的数据
    2.11IDS10-J不要拆分两种数据结构中的字符串
    2.12IDS11-J在验证前去掉非字符码点
    2.13IDS12-J在不同的字符编码中无损转换字符串数据
    2.14IDS13-J在文件或者网络I/O两端使用兼容的编码方式

    第3章声明和初始化(DCL)规则风险评估概要
    3.1DCL00-J防止类的循环初始化
    3.2DCL01-J不要重用Java标准库的已经公开的标识
    3.3DCL02-J将所有增强for语句的循环变量声明为final类型

    第4章表达式(EXP)规则风险评估概要
    4.1EXP00-J不要忽略方法的返回值
    4.2EXP01-J不要解引用空指针
    4.3EXP02-J使用两个参数的Arrays.equals方法来比较两个数组的内容
    4.4EXP03-J不要用相等操作符来比较两个基础数据类型的值
    4.5EXP04-J确保使用正确的类型来自动封装数值
    4.6EXP05-J不要在一个表达式中对同一变量进行多次写入
    4.7EXP06-J不要在断言中使用有副作用的表达式

    第5章数值类型与运算(NUM)规则风险评估概要
    5.1NUM00-J检测和避免整数溢出
    5.2NUM01-J不要对同一数据进行位运算和数学运算
    5.3NUM02-J确保除法运算和模运算中的除数不为0
    5.4NUM03-J使用可容纳无符号数据合法取值范围的整数类型
    5.5NUM04-J不要使用浮点数进行精细计算
    5.6NUM05-J不要使用非标准化数
    5.7NUM06-J使用strictfp修饰符确保跨平台浮点运算的一致性
    5.8NUM07-J不要尝试与NaN进行比较
    5.9NUM08-J检查浮点输入特殊的数值
    5.10NUM09-J不要使用浮点变量作为循环计数器
    5.11NUM10-J不要从浮点字元构造BigDecimal对象
    5.12NUM11-J不要比较或者审查以字符串表达的浮点数值
    5.13NUM12-J确保将数值转换成较小类型时不会产生数据丢失或曲解
    5.14NUM13-J转换基本整数类型至浮点类型时应避免精度损失

    第6章面向对象(OBJ)规则风险评估概要
    6.1OBJ00-J只有受信子类能对具有不变性的类和方法进行扩展
    6.2OBJ01-J声明数据成员为私有并提供可访问的封装器方法
    6.3OBJ02-J当改变基类时,保存子类之间的依赖关系
    6.4OBJ03-J在新代码中,不要混用具有泛型和非泛型的原始数据类型
    6.5OBJ04-J为可变类提供复制功能,并通过此功能允许将实例传递给非受信代码
    6.6OBJ05-J在返回引用之前,防御性复制私有的可变的类成员
    6.7OBJ06-J对可变输入和可变的内部组件创建防御性复制
    6.8OBJ07-J不允许敏感类复制其自身
    6.9OBJ08-J不要在嵌套类中暴露外部类的私有字段
    6.10OBJ09-J比较类而不是类名称
    6.11OBJ10-J不要使用公有静态的非final变量
    6.12OBJ11-J小心处理构造函数抛出异常的情况

    第7章方法(MET)规则风险评估概要
    7.1MET00-J验证方法参数
    7.2MET01-J不要使用断言验证方法参数
    7.3MET02-J不要使用弃用的或过时的类和方法
    7.4MET03-J进行安全检测的方法必须声明为private或final
    7.5MET04-J不要增加被覆写方法和被隐藏方法的可访问性
    7.6MET05-J确保构造函数不会调用可覆写的方法
    7.7MET06-J不要在clone中调用可覆写的方法
    7.8MET07-J不要定义类方法来隐藏基类或基类接口中声明的方法
    7.9MET08-J确保比较等同的对象能得到相等的结果
    7.10MET09-J定义了equlas方法的类必须定义hashCode方法
    7.11MET10-J实现compareTo方法时遵守常规合约
    7.12MET11-J确保比较中的关键码是不可变的
    7.13MET12-J不要使用析构函数

    第8章异常行为(ERR)规则风险评估概要
    8.1ERR00-J不要消除或忽略可检查的异常
    8.2ERR01-J不能允许异常泄露敏感信息
    8.3ERR02-J记录日志时应避免异常
    8.4ERR03-J在方法失败时恢复对象先前的状态
    8.5ERR04-J不要在finally程序段非正常退出
    8.6ERR05-J不要在finally程序段中遗漏可检查异常
    8.7ERR06-J不要抛出未声明的可检查异常
    8.8ERR07-J不要抛出RuntimeException、Exception或Throwable
    8.9ERR08-J不要捕捉NullPointerException或任何它的基类
    8.10ERR09-J禁止非受信代码终止JVM

    第9章可见性和原子性(VNA)规则风险评估概要
    9.1VNA00-J当需要读取共享基础数据类型变量时,需要保证其可见性
    9.2VNA01-J保证对一个不可变对象的共享引用的可见性
    9.3VNA02-J保证对于共享变量的组合操作是原子性的
    9.4VNA03-J即使每一个方法都是相互独立并且是原子性的,也不要假设一组调用是原子性的
    9.5VNA04-J保证串联在一起的方法调用是原子性的
    9.6VNA05-J保证在读写64位的数值时的原子性

    第10章锁(LCK)规则风险评估概要
    10.1LCK00-J通过私有final锁对象可以同步那些与非受信代码交互的类
    10.2LCK01-J不要基于那些可能被重用的对象进行同步
    10.3LCK02-J不要基于那些通过getClass返回的类对象来实现同步
    10.4LCK03-J不要基于高层并发对象的内置锁来实现同步
    10.5LCK04-J即使集合是可访问的,也不要基于集合视图使用同步
    10.6LCK05-J对那些可以被非受信代码修改的静态字段,需要同步进入
    10.7LCK06-J不要使用一个实例锁来保护共享静态数据
    10.8LCK07-J使用相同的方式请求和释放锁来避免死锁
    10.9LCK08-J在异常条件时,保证释放已经持有的锁
    10.10LCK09-J不要执行那些持有锁时会阻塞的操作
    10.11LCK10-J不要使用不正确形式的双重锁定检查惯用法
    10.12LCK11-J当使用那些不能对锁策略进行承诺的类时,避免使用客户端锁定

    第11章线程API(THI)规则风险评估概要
    11.1THI00-J不要调用Thread.run
    11.2THI01-J不能调用ThreadGroup方法
    11.3THI02-J通知所有等待中的线程而不是单一线程
    11.4THI03-J始终在循环中调用wait和await方法
    11.5THI04-J确保可以终止受阻线程
    11.6THI05-J不要使用Thread.stop来终止线程

    第12章线程池(TPS)规则风险评估概要
    12.1TPS00-J使用线程池处理流量突发以实现降低性能运行
    12.2TPS01-J不要使用有限的线程池来执行相互依赖的任务
    12.3TPS02-J确保提交至线程池的任务是可中断的
    12.4TPS03-J确保线程池中正在执行的任务不会失败而不给出任何提示
    12.5TPS04-J使用线程池时,确保ThreadLocal变量可以重新初始化

    第13章与线程安全相关的其他规则(TSM)规则风险评估概要
    13.1TSM00-J不要使用非线程安全方法来覆写线程安全方法
    13.2TSM01-J不要让this引用在创建对象时泄漏
    13.3TSM02-J不要在初始化类时使用后台线程
    13.4TSM03-J不要发布部分初始化的对象

    第14章输入输出(FIO)规则风险评估概要
    14.1FIO00-J不要操作共享目录中的文件
    14.2FIO01-J使用合适的访问权限创建文件
    14.3FIO02-J发现并处理与文件相关的错误
    14.4FIO03-J在终止前移除临时文件
    14.5FIO04-J在不需要时关闭资源
    14.6FIO05-J不要使用wrap或duplicate创建缓存,并将这些缓存暴露给非受信代码
    14.7FIO06-J不能在一个单独的InputStream上创建多个缓存区封装器
    14.8FIO07-J不要让外部进程阻塞输入和输出流
    14.9FIO08-J对读取一个字符或者字节的方法,使用int类型的返回值
    14.10FIO09-J不要使用write方法输出超过0~255的整数
    14.11FIO10-J使用read方法保证填充一个数组
    14.12FIO11-J不要将原始的二进制数据作为字符数据读入
    14.13FIO12-J为小端数据的读写提供方法
    14.14FIO13-J不要在受信边界之外记录敏感信息
    14.15FIO14-J在程序终止时执行正确的清理动作

    第15章序列化(SER)规则风险评估概要
    15.1SER00-J在类的演化过程中维护其序列化的兼容性
    15.2SER01-J不要偏离序列化方法的正确签名
    15.3SER02-J在将对象向信任边界之外发送时,需要签名并且封装敏感对象
    15.4SER03-J不要序列化未经加密的敏感数据
    15.5SER04-J不要允许序列化和反序列化绕过安全管理器
    15.6SER05-J不要序列化内部类实例
    15.7SER06-J在反序列化时,对私有的可变的组件进行防御性复制
    15.8SER07-J不要对实现定义的不可变因素使用默认的序列化格式
    15.9SER08-J在从拥有特性的环境中进行反序列化之前最小化特权
    15.10SER09-J不要从readObject方法中调用可以被覆写的方法
    15.11SER10-J在序列化时,避免出现内存和资源泄漏
    15.12SER11-J防止覆盖外部化的对象

    第16章平台安全性(SEC)规则风险评估概要
    16.1SEC00-J不要允许特权代码块越过受信边界泄露敏感信息
    16.2SEC01-J不要在特权代码块中使用污染过的变量
    16.3SEC02-J不要基于非受信源进行安全检查
    16.4SEC03-J不要在允许非受信代码装载任意类之后装载受信类
    16.5SEC04-J使用安全管理器检查来保护敏感操作
    16.6SEC05-J不要使用反射来增加类、方法和字段的可访问性
    16.7SEC06-J不要依赖于默认的由URLClassLoader和java.util.jar提供的自动化签名检查
    16.8SEC07-J当编写一个自定义的类装载器时调用基类的getPermissions方法
    16.9SEC08-J定义基于原生方法的封装器

    第17章运行环境(ENV)规则风险评估概要
    17.1ENV00-J不要签名只执行非特权操作的代码
    17.2ENV01-J将所有安全敏感的代码置于单独一个jar包中,并且在签名之后封装它
    17.3ENV02-J不要信任环境变量的值
    17.4ENV03-J不要赋予危险的权限组合
    17.5ENV04-J不要关闭字节码验证功能
    17.6ENV05-J不要部署一个被远程监视的应用

    第18章其他(MSC)规则风险评估概要
    18.1MSC00-J在交换安全数据时使用SSLSocket而不是Socket
    18.2MSC01-J不要使用空的无限循环
    18.3MSC02-J生成强随机数
    18.4MSC03-J不要硬编码敏感信息
    18.5MSC04-J防止内存泄漏
    18.6MSC05-J不要耗尽堆空间
    18.7MSC06-J当一个遍历正在进行时,不要修改它对应的集合
    18.8MSC07-J防止多次实例化单例对象
    术语表
    参考资源
  • 内容简介:
      《华章程序员书库:Java安全编码标准》是Java安全编码领域最权威、最全面、最详细的著作,Java之父JamesA.Gosling推荐。不仅从语言角度系统而详细地阐述Java安全编码的要素、标准、规范和最佳实践,而且从架构设计的角度分析了JavaAPI存在的设计缺陷和可能存在的安全风险,以及应对的策略和措施。可以将本书作为Java安全方面的工具书,根据自己的需要,找到自己感兴趣的规则进行阅读和理解,或者在实际开发中遇到安全问题时,根据书中列出的大致分类对规则进行索引和阅读,也可以通读全书的所有规则,系统地了解Java安全规则,增强对Java安全特性、语言使用、运行环境特性的理解。《华章程序员书库:Java安全编码标准》能指导Java软件工程师设计出高质量的、安全的、可靠的、强大的、有弹性的、可用性和可维护性高的软件系统。
      《华章程序员书库:Java安全编码标准》内容非常全面,包括基于JavaSE6平台的一系列应用于Java语言和类库的安全编码规则,并且对这一系列规则进行了分类,包括输入数据验证、声明和初始化、表达式、数值类型和操作、面向对象、方法使用、异常处理、可见性和原子性、锁、线程、输入输出、序列化、平台安全特性、Java运行环境等重要方面,对每一个方面所涉及的安全编码要素、规范和标准进行了详细阐释。
  • 目录:
    译者序

    前言
    致谢

    第1章概述
    1.1错位的信任
    1.2注入攻击
    1.3敏感数据泄露
    1.4效能泄露
    1.5拒绝服务
    1.6序列化
    1.7并发性、可见性和内存
    1.8最低权限原则
    1.9安全管理器
    1.10类装载器
    1.11小结

    第2章输入验证和数据净化(IDS)规则风险评估概要
    2.1IDS00-J净化穿越受信边界的非受信数据
    2.2IDS01-J验证前标准化字符串
    2.3IDS02-J在验证之前标准化路径名
    2.4IDS03-J不要记录未经净化的用户输入
    2.5IDS04-J限制传递给ZipInputStream的文件大小
    2.6IDS05-J使用ASCII字符集的子集作为文件名和路径名
    2.7IDS06-J从格式字符串中排除用户输入
    2.8IDS07-J不要向Runtime.exec方法传递非受信、未净化的数据
    2.9IDS08-J净化传递给正则表达式的非受信数据
    2.10DS09-J如果没有指定适当的locale,不要使用locale相关方法处理与locale相关的数据
    2.11IDS10-J不要拆分两种数据结构中的字符串
    2.12IDS11-J在验证前去掉非字符码点
    2.13IDS12-J在不同的字符编码中无损转换字符串数据
    2.14IDS13-J在文件或者网络I/O两端使用兼容的编码方式

    第3章声明和初始化(DCL)规则风险评估概要
    3.1DCL00-J防止类的循环初始化
    3.2DCL01-J不要重用Java标准库的已经公开的标识
    3.3DCL02-J将所有增强for语句的循环变量声明为final类型

    第4章表达式(EXP)规则风险评估概要
    4.1EXP00-J不要忽略方法的返回值
    4.2EXP01-J不要解引用空指针
    4.3EXP02-J使用两个参数的Arrays.equals方法来比较两个数组的内容
    4.4EXP03-J不要用相等操作符来比较两个基础数据类型的值
    4.5EXP04-J确保使用正确的类型来自动封装数值
    4.6EXP05-J不要在一个表达式中对同一变量进行多次写入
    4.7EXP06-J不要在断言中使用有副作用的表达式

    第5章数值类型与运算(NUM)规则风险评估概要
    5.1NUM00-J检测和避免整数溢出
    5.2NUM01-J不要对同一数据进行位运算和数学运算
    5.3NUM02-J确保除法运算和模运算中的除数不为0
    5.4NUM03-J使用可容纳无符号数据合法取值范围的整数类型
    5.5NUM04-J不要使用浮点数进行精细计算
    5.6NUM05-J不要使用非标准化数
    5.7NUM06-J使用strictfp修饰符确保跨平台浮点运算的一致性
    5.8NUM07-J不要尝试与NaN进行比较
    5.9NUM08-J检查浮点输入特殊的数值
    5.10NUM09-J不要使用浮点变量作为循环计数器
    5.11NUM10-J不要从浮点字元构造BigDecimal对象
    5.12NUM11-J不要比较或者审查以字符串表达的浮点数值
    5.13NUM12-J确保将数值转换成较小类型时不会产生数据丢失或曲解
    5.14NUM13-J转换基本整数类型至浮点类型时应避免精度损失

    第6章面向对象(OBJ)规则风险评估概要
    6.1OBJ00-J只有受信子类能对具有不变性的类和方法进行扩展
    6.2OBJ01-J声明数据成员为私有并提供可访问的封装器方法
    6.3OBJ02-J当改变基类时,保存子类之间的依赖关系
    6.4OBJ03-J在新代码中,不要混用具有泛型和非泛型的原始数据类型
    6.5OBJ04-J为可变类提供复制功能,并通过此功能允许将实例传递给非受信代码
    6.6OBJ05-J在返回引用之前,防御性复制私有的可变的类成员
    6.7OBJ06-J对可变输入和可变的内部组件创建防御性复制
    6.8OBJ07-J不允许敏感类复制其自身
    6.9OBJ08-J不要在嵌套类中暴露外部类的私有字段
    6.10OBJ09-J比较类而不是类名称
    6.11OBJ10-J不要使用公有静态的非final变量
    6.12OBJ11-J小心处理构造函数抛出异常的情况

    第7章方法(MET)规则风险评估概要
    7.1MET00-J验证方法参数
    7.2MET01-J不要使用断言验证方法参数
    7.3MET02-J不要使用弃用的或过时的类和方法
    7.4MET03-J进行安全检测的方法必须声明为private或final
    7.5MET04-J不要增加被覆写方法和被隐藏方法的可访问性
    7.6MET05-J确保构造函数不会调用可覆写的方法
    7.7MET06-J不要在clone中调用可覆写的方法
    7.8MET07-J不要定义类方法来隐藏基类或基类接口中声明的方法
    7.9MET08-J确保比较等同的对象能得到相等的结果
    7.10MET09-J定义了equlas方法的类必须定义hashCode方法
    7.11MET10-J实现compareTo方法时遵守常规合约
    7.12MET11-J确保比较中的关键码是不可变的
    7.13MET12-J不要使用析构函数

    第8章异常行为(ERR)规则风险评估概要
    8.1ERR00-J不要消除或忽略可检查的异常
    8.2ERR01-J不能允许异常泄露敏感信息
    8.3ERR02-J记录日志时应避免异常
    8.4ERR03-J在方法失败时恢复对象先前的状态
    8.5ERR04-J不要在finally程序段非正常退出
    8.6ERR05-J不要在finally程序段中遗漏可检查异常
    8.7ERR06-J不要抛出未声明的可检查异常
    8.8ERR07-J不要抛出RuntimeException、Exception或Throwable
    8.9ERR08-J不要捕捉NullPointerException或任何它的基类
    8.10ERR09-J禁止非受信代码终止JVM

    第9章可见性和原子性(VNA)规则风险评估概要
    9.1VNA00-J当需要读取共享基础数据类型变量时,需要保证其可见性
    9.2VNA01-J保证对一个不可变对象的共享引用的可见性
    9.3VNA02-J保证对于共享变量的组合操作是原子性的
    9.4VNA03-J即使每一个方法都是相互独立并且是原子性的,也不要假设一组调用是原子性的
    9.5VNA04-J保证串联在一起的方法调用是原子性的
    9.6VNA05-J保证在读写64位的数值时的原子性

    第10章锁(LCK)规则风险评估概要
    10.1LCK00-J通过私有final锁对象可以同步那些与非受信代码交互的类
    10.2LCK01-J不要基于那些可能被重用的对象进行同步
    10.3LCK02-J不要基于那些通过getClass返回的类对象来实现同步
    10.4LCK03-J不要基于高层并发对象的内置锁来实现同步
    10.5LCK04-J即使集合是可访问的,也不要基于集合视图使用同步
    10.6LCK05-J对那些可以被非受信代码修改的静态字段,需要同步进入
    10.7LCK06-J不要使用一个实例锁来保护共享静态数据
    10.8LCK07-J使用相同的方式请求和释放锁来避免死锁
    10.9LCK08-J在异常条件时,保证释放已经持有的锁
    10.10LCK09-J不要执行那些持有锁时会阻塞的操作
    10.11LCK10-J不要使用不正确形式的双重锁定检查惯用法
    10.12LCK11-J当使用那些不能对锁策略进行承诺的类时,避免使用客户端锁定

    第11章线程API(THI)规则风险评估概要
    11.1THI00-J不要调用Thread.run
    11.2THI01-J不能调用ThreadGroup方法
    11.3THI02-J通知所有等待中的线程而不是单一线程
    11.4THI03-J始终在循环中调用wait和await方法
    11.5THI04-J确保可以终止受阻线程
    11.6THI05-J不要使用Thread.stop来终止线程

    第12章线程池(TPS)规则风险评估概要
    12.1TPS00-J使用线程池处理流量突发以实现降低性能运行
    12.2TPS01-J不要使用有限的线程池来执行相互依赖的任务
    12.3TPS02-J确保提交至线程池的任务是可中断的
    12.4TPS03-J确保线程池中正在执行的任务不会失败而不给出任何提示
    12.5TPS04-J使用线程池时,确保ThreadLocal变量可以重新初始化

    第13章与线程安全相关的其他规则(TSM)规则风险评估概要
    13.1TSM00-J不要使用非线程安全方法来覆写线程安全方法
    13.2TSM01-J不要让this引用在创建对象时泄漏
    13.3TSM02-J不要在初始化类时使用后台线程
    13.4TSM03-J不要发布部分初始化的对象

    第14章输入输出(FIO)规则风险评估概要
    14.1FIO00-J不要操作共享目录中的文件
    14.2FIO01-J使用合适的访问权限创建文件
    14.3FIO02-J发现并处理与文件相关的错误
    14.4FIO03-J在终止前移除临时文件
    14.5FIO04-J在不需要时关闭资源
    14.6FIO05-J不要使用wrap或duplicate创建缓存,并将这些缓存暴露给非受信代码
    14.7FIO06-J不能在一个单独的InputStream上创建多个缓存区封装器
    14.8FIO07-J不要让外部进程阻塞输入和输出流
    14.9FIO08-J对读取一个字符或者字节的方法,使用int类型的返回值
    14.10FIO09-J不要使用write方法输出超过0~255的整数
    14.11FIO10-J使用read方法保证填充一个数组
    14.12FIO11-J不要将原始的二进制数据作为字符数据读入
    14.13FIO12-J为小端数据的读写提供方法
    14.14FIO13-J不要在受信边界之外记录敏感信息
    14.15FIO14-J在程序终止时执行正确的清理动作

    第15章序列化(SER)规则风险评估概要
    15.1SER00-J在类的演化过程中维护其序列化的兼容性
    15.2SER01-J不要偏离序列化方法的正确签名
    15.3SER02-J在将对象向信任边界之外发送时,需要签名并且封装敏感对象
    15.4SER03-J不要序列化未经加密的敏感数据
    15.5SER04-J不要允许序列化和反序列化绕过安全管理器
    15.6SER05-J不要序列化内部类实例
    15.7SER06-J在反序列化时,对私有的可变的组件进行防御性复制
    15.8SER07-J不要对实现定义的不可变因素使用默认的序列化格式
    15.9SER08-J在从拥有特性的环境中进行反序列化之前最小化特权
    15.10SER09-J不要从readObject方法中调用可以被覆写的方法
    15.11SER10-J在序列化时,避免出现内存和资源泄漏
    15.12SER11-J防止覆盖外部化的对象

    第16章平台安全性(SEC)规则风险评估概要
    16.1SEC00-J不要允许特权代码块越过受信边界泄露敏感信息
    16.2SEC01-J不要在特权代码块中使用污染过的变量
    16.3SEC02-J不要基于非受信源进行安全检查
    16.4SEC03-J不要在允许非受信代码装载任意类之后装载受信类
    16.5SEC04-J使用安全管理器检查来保护敏感操作
    16.6SEC05-J不要使用反射来增加类、方法和字段的可访问性
    16.7SEC06-J不要依赖于默认的由URLClassLoader和java.util.jar提供的自动化签名检查
    16.8SEC07-J当编写一个自定义的类装载器时调用基类的getPermissions方法
    16.9SEC08-J定义基于原生方法的封装器

    第17章运行环境(ENV)规则风险评估概要
    17.1ENV00-J不要签名只执行非特权操作的代码
    17.2ENV01-J将所有安全敏感的代码置于单独一个jar包中,并且在签名之后封装它
    17.3ENV02-J不要信任环境变量的值
    17.4ENV03-J不要赋予危险的权限组合
    17.5ENV04-J不要关闭字节码验证功能
    17.6ENV05-J不要部署一个被远程监视的应用

    第18章其他(MSC)规则风险评估概要
    18.1MSC00-J在交换安全数据时使用SSLSocket而不是Socket
    18.2MSC01-J不要使用空的无限循环
    18.3MSC02-J生成强随机数
    18.4MSC03-J不要硬编码敏感信息
    18.5MSC04-J防止内存泄漏
    18.6MSC05-J不要耗尽堆空间
    18.7MSC06-J当一个遍历正在进行时,不要修改它对应的集合
    18.8MSC07-J防止多次实例化单例对象
    术语表
    参考资源
查看详情
系列丛书 / 更多
华章程序员书库:Java安全编码标准
OpenCV 3计算机视觉:Python语言实现(原书第2版)
[爱尔兰]乔·米尼奇诺(JoeMinichino) 著;[爱尔兰]乔·米尼奇诺(JoeMinichino) 编;刘波苗贝贝史斌 译
华章程序员书库:Java安全编码标准
OpenGL ES 3.0编程指南
Dan、Budi、Dave Shreine 著;姚军 译
华章程序员书库:Java安全编码标准
精彩绝伦的Android UI设计:响应式用户界面与设计模式
Juhani Lehtimaki 著;王东明 译
华章程序员书库:Java安全编码标准
Python编程实战:运用设计模式、并发和程序库创建高质量程序
[美]Mark Summerfield 著;爱飞翔 译
华章程序员书库:Java安全编码标准
OpenGL编程指南(原书第9版)
王锐 译
华章程序员书库:Java安全编码标准
HTML5 Canvas核心技术:图形、动画与游戏开发
[美]David Geary 著
华章程序员书库:Java安全编码标准
华章程序员书库:OpenGL编程指南(原书第8版)
[美]施莱尔(Dave Shreiner)、Graham、John Kessenich 著;王锐 译
华章程序员书库:Java安全编码标准
领域特定语言
[英]Martin Fowler 著;Thought Works 译
华章程序员书库:Java安全编码标准
SOA与Java:用Java技术实现面向服务
[美]Thomas、[印]Andre、[美]Satadru、[英]Philip Thomas 著;赵利通 译
华章程序员书库:Java安全编码标准
iPad应用开发实践指南
[美]Kirby、[美]Tom Harrington 著;张菲 译
华章程序员书库:Java安全编码标准
Java TCP/IP Socket编程
[美]卡尔弗特、[美]多纳霍 著;周恒民 译
华章程序员书库:Java安全编码标准
Android游戏开发实践指南
[美]Rick Rogers 著;爱飞翔 译
相关图书 / 更多
华章程序员书库:Java安全编码标准
华章传奇派:钢婚(女性现实主义题材,婚姻谍战大戏,原来我们可以试着信任彼此)
何许人
华章程序员书库:Java安全编码标准
华章大历史·武士的悲哀:崇文抑武与北宋兴亡
陈峰
华章程序员书库:Java安全编码标准
华章教材经典译丛·QCA设计原理与应用:超越定性与定量研究的新方法
杜运周 译者;伯努瓦·里豪克斯(Benot Rihoux);查尔斯C.拉金(Charles C.Ragn)
华章程序员书库:Java安全编码标准
华章经管:管理学精要(亚洲篇)
丁慧平 著;[美]普蒂 韦里奇 孔茨 译
华章程序员书库:Java安全编码标准
华章溢彩-嘉定文选
嘉定区文广局 著
华章程序员书库:Java安全编码标准
华章晋韵:中国历史上的山西元素
李广洁 著
华章程序员书库:Java安全编码标准
华章大历史:唐宋帝国与运河
全汉昇
华章程序员书库:Java安全编码标准
华章大历史·匈人王阿提拉与罗马帝国的覆灭
[英]克里斯托夫·凯利
华章程序员书库:Java安全编码标准
华章掠过30年
中国人才研究会妇女人才专业委员会
华章程序员书库:Java安全编码标准
华章重现:曾世家文物
湖北省博物馆 编
华章程序员书库:Java安全编码标准
华章数学译丛:线性代数及其应用(原书第4版)
刘深泉、张万芹、陈玉珍 译
华章程序员书库:Java安全编码标准
华章 : 文学艺术作品中的党史
慈爱民 著
您可能感兴趣 / 更多
华章程序员书库:Java安全编码标准
语言教学材料的真实性设计
Freda Mishan
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·关节镜与显微外科(第14版)(影印版)
Frederick、M.、Azar、James、H. 著
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·手外科(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·创伤与截肢(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·一般原则、感染与肿瘤(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·脊柱外科(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·足踝外科(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·关节外科(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·儿童骨科(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学·运动医学(第14版)(影印版)
Frederick M. Azar;James H. Beaty
华章程序员书库:Java安全编码标准
云原生应用架构:微服务开发最佳实战
FreeWheel核心业务系统开发团队
华章程序员书库:Java安全编码标准
坎贝尔骨科手术学精要
Frederick M. Azar 原著;唐佩福 主译;S. Terry Canale;James H. Beaty;黄鹏