联系我们

课程大纲

第一天

IT安全与安全编码

  • 安全的本质
  • IT安全相关术语
  • 风险的定义
  • IT安全的不同方面
  • 不同应用领域的需求
  • IT安全与安全编码
  • 从漏洞到僵尸网络和网络犯罪
    • 安全缺陷的本质
    • 困难的原因
    • 从受感染的计算机到定向攻击
  • 安全缺陷的分类
    • Landwehr的分类法
    • 七大有害王国
    • OWASP十大2013
    • OWASP十大比较2003-2013

Microsoft®安全开发生命周期(SDL)简介

  • 议程
  • 受到攻击的应用程序...
    • 网络犯罪的演变
    • 攻击正集中于应用程序
    • 大多数漏洞存在于较小的ISV应用程序中
  • Microsoft SDL的起源...
    • Microsoft的安全时间线...
    • 哪些应用程序需要遵循SDL?
  • Microsoft安全开发生命周期(SDL)
    • Microsoft安全开发生命周期(SDL)
    • SDL前要求:安全培训
    • 第一阶段:需求
    • 第二阶段:设计
    • 第三阶段:实现
    • 第四阶段:验证
    • 第五阶段:发布-响应计划
    • 第五阶段:发布-最终安全审查
    • 第五阶段:发布-归档
    • SDL后要求:响应
    • 面向LOB应用的SDL流程指南
    • 敏捷方法论的SDL指南
    • 安全软件开发需要流程改进

安全设计原则

  • 攻击面
    • 攻击面减少
    • 攻击面-示例
    • 攻击面分析
    • 攻击面减少-示例
  • 隐私
    • 隐私
    • 理解应用程序行为和关注点
  • 纵深防御
    • SDL核心原则:纵深防御
    • 纵深防御-示例
  • 最小权限原则
    • 最小权限-示例
  • 安全默认值
    • 安全默认值-示例

安全实现原则

  • 议程
  • Microsoft安全开发生命周期(SDL)
  • 缓冲区溢出基础
    • Intel 80x86处理器-主要寄存器
    • 内存地址布局
    • x86上C/C++的函数调用机制
    • 局部变量和栈帧
    • 栈溢出
      • 栈上的缓冲区溢出
      • 练习-简介
      • 练习BOFIntro
      • 练习BOFIntro-确定栈布局
      • 练习BOFIntro-简单漏洞利用
  • 输入验证
    • 输入验证概念
    • 整数问题
      • 负整数的表示
      • 整数溢出
      • 算术溢出-猜输出!
      • 练习IntOverflow
      • Math.Abs(int.MinValue)的值是多少?
    • 整数问题缓解
      • 整数问题缓解
      • 避免算术溢出-加法
      • 避免算术溢出-乘法
      • 使用C#中的checked关键字检测溢出
      • 练习-在C#中使用checked关键字
      • C#中溢出触发的异常
    • 案例研究-.NET中的整数溢出
      • 真实世界的整数溢出漏洞
      • 利用整数溢出漏洞
    • 路径遍历漏洞
      • 路径遍历缓解

第二天

安全实现原则

  • 注入
    • 典型的SQL注入攻击方法
    • 盲注和基于时间的SQL注入
    • SQL注入保护方法
    • 命令注入
  • 身份验证失效-密码管理
    • 练习-哈希密码的弱点
    • 密码管理和存储
    • 用于密码存储的特殊用途哈希算法
  • 跨站脚本(XSS)
    • 跨站脚本(XSS)
    • CSS注入
    • 利用:通过其他HTML标签注入
    • XSS防护
  • 功能级访问控制缺失
    • 过滤文件上传
  • 实用密码学
    • 使用对称密码学提供机密性
    • 对称加密算法
    • 分组密码-操作模式
    • 哈希或消息摘要
    • 哈希算法
    • 消息认证码(MAC)
    • 使用对称密钥提供完整性和真实性
    • 使用公钥加密提供机密性
    • 经验法则-私钥的持有
    • 密码管理中的典型错误
    • 练习-硬编码密码
    • 结论

安全验证原则

  • 功能测试与安全测试
  • 安全漏洞
  • 优先级排序
  • SDLC中的安全测试
  • 测试计划步骤(风险分析)
  • 范围界定和信息收集
    • 利益相关者
    • 资产
    • 攻击面
    • 测试的安全目标
  • 威胁建模
    • 威胁建模
    • 攻击者画像
    • 基于攻击树的威胁建模
    • 基于误用/滥用用例的威胁建模
    • 误用/滥用用例-简单的网上商店示例
    • 基于元素的STRIDE威胁建模方法-MS SDL
    • 识别安全目标
    • 图表-DFD元素示例
    • 数据流图-示例
    • 威胁枚举-MS SDL的STRIDE和DFD元素
    • 风险分析-威胁分类
    • DREAD威胁/风险排名模型
  • 安全测试技术和工具
    • 一般测试方法
    • SDLC各步骤的技术
  • 代码审查
    • 软件安全代码审查
    • 污点分析
    • 启发式方法
  • 静态代码分析
    • 静态代码分析
    • 练习-使用静态代码分析工具
  • 测试实现
    • 手动运行时验证
    • 手动与自动化安全测试
    • 渗透测试
    • 压力测试
  • 模糊测试
    • 自动化安全测试-模糊测试
    • 模糊测试的挑战
  • Web漏洞扫描器
    • 练习-使用漏洞扫描器
  • 环境检查与加固
    • 通用漏洞评分系统-CVSS
    • 漏洞扫描器
    • 公共数据库
  • 案例研究-表单身份验证绕过
    • NULL字节终止漏洞
    • 代码中的表单身份验证绕过漏洞
    • 利用表单身份验证绕过

知识来源

  • 安全编码来源-入门套件
  • 漏洞数据库
  • MSDN上的.NET安全编码指南
  • .NET安全编码速查表
  • 推荐书籍-.NET和ASP.NET
 14 小时

客户评论 (3)

即将举行的公开课程

课程分类