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

課程簡介

第1天

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中的整數溢位
      • 真實世界的整數溢位漏洞
      • 利用整數溢位漏洞
    • 路徑遍歷漏洞
      • 路徑遍歷緩解

第2天

安全實作原則

  • 注入
    • 典型的SQL注入攻擊方法
    • 盲注與基於時間的SQL注入
    • SQL注入防護方法
    • 命令注入
  • 失效的驗證–密碼管理
    • 練習–雜湊密碼的弱點
    • 密碼管理與儲存
    • 用於密碼儲存的特殊用途雜湊演算法
  • 跨站指令碼(XSS)
    • 跨站指令碼(XSS)
    • CSS注入
    • 利用:透過其他HTML標籤注入
    • XSS防範
  • 缺少功能層級存取控制
    • 篩選檔案上傳
  • 實用密碼學
    • 使用對稱加密提供機密性
    • 對稱加密演算法
    • 區塊加密–操作模式
    • 雜湊或訊息摘要
    • 雜湊演算法
    • 訊息驗證碼(MAC)
    • 使用對稱金鑰提供完整性與真實性
    • 使用公開金鑰加密提供機密性
    • 經驗法則–持有私密金鑰
    • 密碼管理中的常見錯誤
    • 練習–硬編碼密碼
    • 結論

安全驗證原則

  • 功能測試與安全測試
  • 安全漏洞
  • 優先排序
  • SDLC中的安全測試
  • 測試規劃的步驟(風險分析)
  • 範圍界定與資訊收集
    • 利害關係人
    • 資產
    • 攻擊面
    • 測試的安全目標
  • 威脅建模
    • 威脅建模
    • 攻擊者概況
    • 基於攻擊樹的威脅建模
    • 基於誤用/濫用案例的威脅建模
    • 誤用/濫用案例–簡單的Web商店範例
    • MS SDL的STRIDE逐元素威脅建模方法
    • 識別安全目標
    • 繪製圖表–DFD元素範例
    • 資料流程圖–範例
    • 威脅列舉–MS SDL的STRIDE與DFD元素
    • 風險分析–威脅分類
    • DREAD威脅/風險排序模型
  • 安全測試技術與工具
    • 一般測試方法
    • SDLC各步驟的技術
  • 程式碼審查
    • 軟體安全的程式碼審查
    • 汙點分析
    • 啟發式方法
  • 靜態程式碼分析
    • 靜態程式碼分析
    • 練習–使用靜態程式碼分析工具
  • 測試實作
    • 手動執行時期驗證
    • 手動與自動化安全測試
    • 滲透測試
    • 壓力測試
  • 模糊測試
    • 自動化安全測試–模糊測試
    • 模糊測試的挑戰
  • Web漏洞掃描器
    • 練習–使用漏洞掃描器
  • 檢查與強化環境
    • 通用漏洞評分系統–CVSS
    • 漏洞掃描器
    • 公開資料庫
  • 案例研究–表單驗證繞過
    • NULL位元組終止漏洞
    • 程式碼中的表單驗證繞過漏洞
    • 利用表單驗證繞過

知識來源

  • 安全編碼來源–入門套件
  • 漏洞資料庫
  • MSDN上的.NET安全編碼指引
  • .NET安全編碼速查表
  • 推薦書籍–.NET與ASP.NET

人數


每位參與者的報價

客戶評論 (3)

即將到來的課程

課程分類