课程目录:软件安全开发培训
4401 人关注
(78637/99817)
课程大纲:

    软件安全开发培训

 

 

 

 

数据输入验证与数据清理
1、SQL注入,XML注入,regex注入攻击原理与防范
了解系统输入数据验证过程中的安全注意事项,以及转换和传输过程中的安全注意事项
2、字符串验证,路径名验证以及日志记录中的安全漏洞与防范
3、ZipInputStream与Runtime安全注意事项
4、字符串在编码转换,网络传输中的安全注意事项
对象声明与初始化过程中安全陷阱与防范
1、防范类初始化的嵌套循环
了解对象声明与初始化过程中安全陷阱与防范方法
2、不要重复使用Java标准库中的公开标识符
3、循环相关变量声明注意事项
表达式安全注意事项-实战案例分析
1、不要忽略方法的返回值
了解表达式安全注意事项
2、不要引用空指针
3、数组内容比较安全注意事项
4、‘==’和equals方法中的安全注意事项
5、原始数据封装与运算中的安全注意事项
数字类型与操作安全-实战操作
1、防范整数溢出
了解数字类型变量声明和操作中的各种安全问题及其防范方法
2、单精度浮点数运算相关安全问题
3、strictfp的使用
面向对象安全
1、防范类与方法的恶意扩展
了解对象声明,继承,传递过程中的各种安全问题及其防范方法
2、更新父类引发的安全问题
3、传递对象时使用copy功能
4、防范嵌套类暴露外层类的敏感信息
类方法安全
1、类方法参数的验证
了解类方法实现过程中的各种安全问题及避免方法
2、Assert相关安全注意事项
3、用private和final修饰执行安全检查的方法
4、降低被覆盖方法与隐藏方法的可见性
5、其他类方法相关的安全注意事项
异常处理中的安全问题
1、 压抑或忽视异常情况导致的安全问题
了解异常处理中的安全问题及防范方法
2、异常暴露敏感信息
3、防范日志记录过程中的异常
4、finally相关安全问题
5、不要抛出RuntimeException,Exception,或者Throwable异常
可见性与原子性
1、共享变量复合操作的原子性
了解共享变量访问和复合操作原子性相关的安全问题及其防范方法
2、保证一连串的方法调用具有原子性
3、不要假定对一组相互独立的方法的调用具有原子性
4、当读写64位数据时确保原子性
5、保证共享原始变量的可见性
输入输出安全
1、操作共享目录的风险
了解输入输出中安全问题及其防范方法
2、应用程序结束前删除所有临时文件
3、检测和处理文件相关的错误
4、文件操作相关的其他安全问题
序列化过程中安全
1、在class升级进化过程中,维护序列化过程的兼容性
了解序列化过程中的安全问题及防范方法
2、使用正确的序列化方法声明方式
3、不要序列化非加密的敏感数据
4、在序列化过程中避免内存和资源泄露
5、序列化过程中其他安全相关问题
线程安全
1、不要对一个可能重用的对象加锁
了解线程安全相关问题及其防范方法
2、不要对getClass()方法返回的class对象进行加锁
3、线程API(run,ThreadGroup,stop)相关安全问题
4、在一个线程池内不要执行相互依赖的任务
5、当使用线程池时,确保ThreadLocal变量重新初始化
平台安全
1、不要允许特权模块泄露敏感信息到受信区域之外
了解Java平台相关的安全问题及其防范方法
2、不允许特权模块有受污染变量
3、不要使用反射机制增加类,方法和成员变量的可访问性
4、不要在非受信区域执行安全检查
运行时环境安全
1、只执行非特权操作的代码不要进行代码签名
了解Java运行时环境安全相关问题及其防范方法
2、把所有安全敏感相关的代码放在一个单一的jar包中,进行签名封装
3、不要进行危险的联合授权
4、不要废除二进制码的验证机制