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位的数值时的原子性
如果您想学习本课程,请
预约报名
如果没找到合适的课程或有特殊培训需求,请
订制培训
除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916
技术服务需求表点击在线申请
服务特点:
海量专家资源,精准匹配相关行业,相关项目专家,针对实际需求,顾问式咨询,互动式授课,案例教学,小班授课,实际项目演示,快捷高效,省时省力省钱。
专家力量:
中国科学院软件研究所,计算研究所高级研究人员
oracle,微软,vmware,MSC,Ansys,candence,Altium,达索等大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富
多年实际项目经历,大型项目实战案例,热情,乐于技术分享
针对客户实际需求,案例教学,互动式沟通,学有所获