課程簡介

第一天

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 處理器 - 主要寄存器
    • 內存地址佈局
    • C/C++ 在 x86 上的函數調用機制
    • 局部變量和棧幀
    • 棧溢出
      • 棧上的緩衝區溢出
      • 練習 - 介紹
      • 練習 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 時間:

人數


每位參與者的報價

客戶評論 (5)

即將到來的課程

課程分類