聯繫我們
 課程時長 14 時間:

課程簡介

第一天

資訊系統安全與安全編程

  • 安全的本質
  • 資訊系統安全相關術語
  • 風險的定義
  • 資訊系統安全的不同面向
  • 不同應用領域的要求
  • 資訊系統安全與安全編程的區別
  • 從漏洞到殭屍網路與網絡犯罪
    • 安全缺陷的本質
    • 困難的原因
    • 從受感染的計算機到定向攻擊
  • 安全缺陷的分類
    • Landwehr的分類法
    • 七大惡性領域(Seven Pernicious Kingdoms)
    • OWASP Top Ten 2013
    • OWASP Top Ten 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中的安全測試
  • 測試計劃步驟(風險分析)
  • 範圍確定與信息收集
    • 利益相關者
    • 資產
    • 攻擊表面
    • 測試的安全目標
  • 威脅建模
    • 威脅建模
    • 攻擊者檔案
    • 基於攻擊樹的威脅建模
    • 基於誤用/濫用場景的威脅建模
    • 誤用/濫用場景 – 簡單Web商店範例
    • 基於STRIDE每個元素的MS SDL威脅建模方法
    • 識別安全目標
    • 圖表 – DFD元素範例
    • 數據流圖 – 範例
    • 威脅列舉 – MS SDL的STRIDE和DFD元素
    • 風險分析 – 威脅分類
    • DREAD威脅/風險評分模型
  • 安全測試技術與工具
    • 一般測試方法
    • SDLC各階段的技術
  • 代碼審查
    • 軟體安全的代碼審查
    • 污點分析
    • 啟發式方法
  • 靜態代碼分析
    • 靜態代碼分析
    • 練習 – 使用靜態代碼分析工具
  • 實現測試
    • 手動運行時驗證
    • 手動與自動安全測試
    • 滲透測試
    • 壓力測試
  • 模糊測試
    • 自動安全測試 - 模糊測試
    • 模糊測試的挑戰
  • Web漏洞掃描器
    • 練習 – 使用漏洞掃描器
  • 環境檢查與加固
    • 通用漏洞評分系統 – CVSS
    • 漏洞掃描器
    • 公共數據庫
  • 案例研究 – Forms認證繞過
    • NULL字節終止漏洞
    • 代碼中的Forms認證繞過漏洞
    • 利用Forms認證繞過

知識來源

  • 安全編程來源 – 入門套件
  • 漏洞數據庫
  • MSDN上的.NET安全編程指南
  • .NET安全編程速查表
  • 推薦書籍 – .NET和ASP.NET

客戶評論 (3)

課程分類