
曙海教学优势
本课程,秉承二十一年积累的教学品质,以项目实现为导向,面向企事业项目实际需要,老师将会与您分享设计的全流程以及工具的综合使用经验、技巧。课程可定制,线上/线下/上门皆可,热线:4008699035。
  曙海培训的课程培养了大批受企业欢迎的工程师。大批企业和曙海
     建立了良好的合作关系,20多年来,合作企事业单位以达30多万。曙海培训的课程在业内有着响亮的知名度。
Java安全编码高级培训
培训大纲:
 1 安全编码概述    
 1.1 错位的信任    
 1.2 注入攻击    
 1.3 敏感数据泄露    
 1.4 效能泄露    
 1.5 拒绝服务    
 1.6 序列化    
 1.7 并发性、可见性和内存    
 1.8 最低权限原则    
 1.9 安全管理器    
 1.10 类装载器    
 2 输入验证和数据净化(IDS)规则风险评估概要    
 2.1 净化穿越受信边界的非受信数据    
 2.2 验证前标准化字符串    
 2.3 在验证之前标准化路径名    
 2.4 不要记录未经净化的用户输入    
 2.5 限制传递给ZipInputStream的文件大小    
 2.6 使用ASCII字符集的子集作为文件名和路径名    
 2.7 从格式字符串中排除用户输入    
 2.8 不要向Runtime.exec 方法传递非受信、未净化的数据    
 3 声明和初始化(DCL)规则风险评估概要    
 3.1 防止类的循环初始化;    
 3.2 不要重用Java标准库的已经公开的标识;    
 3.3 将所有增强for语句的循环变量声明为final类型    
 4 表达式(EXP)规则风险评估概要    
 4.1 不要忽略方法的返回值    
 4.2 不要解引用空指针    
 4.3 使用两个参数的Arrays.equals方法来比较两个数组的内容    
 4.4 不要用相等操作符来比较两个基础数据类型的值    
 4.5 确保使用正确的类型来自动封装数值    
 4.6 不要在一个表达式中对同一变量进行多次写入    
 4.7 不要在断言中使用有副作用的表达式    
 5 数值类型与运算(NUM)规则风险评估概要    
 5.1 检测和避免整数溢出    
 5.2 不要对同一数据进行位运算和数学运算    
 5.3 确保除法运算和模运算中的除数不为0    
 5.4 使用可容纳无符号数据合法取值范围的整数类型    
 5.5 不要使用浮点数进行精细计算    
 5.6 不要使用非标准化数    
 5.7 使用strictfp修饰符确保跨平台浮点运算的一致性    
 5.8 不要尝试与NaN进行比较    
 5.9 检查浮点输入特殊的数值    
 5.10 不要从浮点字元构造BigDecimal对象    
 5.11 不要使用浮点变量作为循环计数器    
 5.11.1 确保将数值转换成较小类型时不会产生数据丢失或曲解    
 6 面向对象(OBJ)规则风险评估概要    
 6.1 只有受信子类能对具有不变性的类和方法进行扩展    
 6.2 声明数据成员为私有并提供可访问的封装器方法    
 6.3 当改变基类时,保存子类之间的依赖关系    
 6.4 在新代码中,不要混用具有泛型和非泛型的原始数据类型    
 6.5 为可变类提供复制功能,并通过此功能允许将实例传递给非受信代码    
 6.6 在返回引用之前,防御性复制私有的可变的类成员    
 6.7 对可变输入和可变的内部组件创建防御性复制    
 6.8 不允许敏感类复制其自身    
 6.9 不要在嵌套类中暴露外部类的私有字段    
 6.10 比较类而不是类名称    
 6.11 不要使用公有静态的非final变量    
 6.12 小心处理构造函数抛出异常的情况    
 7 方法(MET)规则风险评估概要    
 7.1 验证方法参数    
 7.2 不要使用断言验证方法参数    
 7.3 不要使用弃用的或过时的类和方法    
 7.4 进行安全检测的方法必须声明为private或final    
 7.5 不要增加被覆写方法和被隐藏方法的可访问性    
 7.6 确保构造函数不会调用可覆写的方法    
 7.7 不要在clone中调用可覆写的方法    
 7.8 不要定义类方法来隐藏基类或基类接口中声明的方法    
 7.9 确保比较等同的对象能得到相等的结果    
 7.10 定义了equlas方法的类必须定义hashCode方法    
 7.11 实现compareTo方法时遵守常规合约    
 7.12 确保比较中的关键码是不可变的    
 7.13 不要使用析构函数    
 8 异常行为(ERR)规则风险评估概要    
 8.1 不要消除或忽略可检查的异常    
 8.2 不能允许异常泄露敏感信息    
 8.3 记录日志时应避免异常    
 8.4 在方法失败时恢复对象先前的状态    
 8.5 不要在finally程序段非正常退出    
 8.6 不要在finally程序段中遗漏可检查异常    
 8.7 不要抛出未声明的可检查异常    
 8.8 不要抛出RuntimeException、Exception或Throwable    
 8.9 不要捕捉NullPointerException或任何它的基类    
 8.10 禁止非受信代码终止JVM    
 9 可见性和原子性(VNA)规则风险评估概要    
 9.1 当需要读取共享基础数据类型变量时,需要保证其可见性    
 9.2 保证对一个不可变对象的共享引用的可见性    
 9.3 保证对于共享变量的组合操作是原子性的    
 9.4 即使每一个方法都是相互独立并且是原子性的,也不要假设一组调用是原子性的    
 9.5 保证串联在一起的方法调用是原子性的    
 9.6 保证在读写64位的数值时的原子性