课程培训
Java安全编码高级培训

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,达索等大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富
多年实际项目经历,大型项目实战案例,热情,乐于技术分享
针对客户实际需求,案例教学,互动式沟通,学有所获
报名表下载
联系我们 更多>>

咨询电话010-62883247

                4007991916

咨询邮箱:soft@info-soft.cn  

 

微信号.jpg

  微信咨询

随时听讲课

聚焦技术实践

订制培训 更多>>