軟體安全開發:屬性驅動模式

本書針對信息安全領域這一核心問題,站在軟體開發過程控制的視角,從系統工程基本理論思想出發,借鑑當前國際先進的軟體安全開發的理論和方法,提出安全屬性驅動的軟體開發方法。

基本介紹

  • 書名:軟體安全開發:屬性驅動模式
  • 作者:宋明秋
  • 譯者:宋明秋
  • ISBN:9787121287503
  • 頁數:272
  • 出版時間:2016-06
  • 裝幀:精裝
  • 開本:16開
基本信息,內容簡介,目錄信息,

基本信息

軟體安全開發——屬性驅動模式
作 譯 者:宋明秋
出版時間:2016-06
千 字 數:425
版 次:01-01
頁 數:272
開 本:16開
I S B N :9787121287503

內容簡介

在日益嚴峻的信息安全背景下,軟體的安全性已經成為信息安全問題的重中之重。本書針對信息安全領域這一核心問題,站在軟體開發過程控制的視角,從系統工程基本理論思想出發,借鑑當前國際先進的軟體安全開發的理論和方法,提出安全屬性驅動的軟體開發方法。全書以軟體安全屬性為核心,將安全屬性貫穿於軟體開發生命周期的每一個階段,通過對軟體開發生命周期全過程的安全質量管理和控制,以期減少開發過程中可能產生的各種漏洞,提高軟體產品的本質安全性。全書共分為6章,第1章是軟體安全開發相關的基本概念,第2章介紹了軟體安全開發方法的歷史演化進程以及一些典型的軟體安全開發模型,第3章基於需求工程原理闡述了軟體安全屬性需求獲取方法,第4章從系統架構角度出發闡述了軟體安全架構的設計方法以及相關安全技術,第5章介紹了軟體開發編碼過程中的安全問題,第6章對於軟體安全性測試進行了全面的闡述。本書的特點是既注重系統性和科學性,又注重實用性,系統性地介紹軟體開發生命周期全過程的安全質量保證方法,可作為軟體開發組織者、系統分析師、軟體架構師、軟體設計人員、開發人員、測試人員、系統運維人員以及軟體相關專業的在校大學生和研究生學習與實踐的較好的參考書。

目錄信息

第1章 理解軟體安全開發 1
1.1 信息安全面臨的困境 1
1.2 軟體安全基本概念 2
1.2.1 軟體定義 2
1.2.2 軟體安全錯誤 2
1.2.3 軟體安全的定義 3
1.3 軟體安全屬性刻畫 4
1.3.1 保密性 4
1.3.2 完整性 5
1.3.3 可用性 5
1.3.4 認證性 6
1.3.5 授權 6
1.3.6 可記賬性/審計性 7
1.3.7 抗抵賴性 7
1.3.8 可控性 8
1.3.9 可信性 8
1.4 信息產品的安全性評估標準 8
1.5 系統安全工程 9
1.6 系統安全工程能力成熟度模型 10
1.7 屬性驅動的軟體安全開發的基本思想 11
1.7.1 軟體安全開發方法 11
1.7.2 軟體定義安全 11
1.7.3 屬性驅動的軟體安全開發方法 14
1.8 本章小結 14
第2章 將安全嵌入軟體開發整個生命周期 16
2.1 系統安全開發方法的進化史 16
2.2 軟體安全開發模型 17
2.2.1 啟發式軟體安全開發模型 17
2.2.2 軟體安全生命周期開發模型 18
2.3 微軟的SDL模型 20
2.3.1 傳統的系統開發瀑布模型 20
2.3.2 軟體安全開發生命周期模型SDL 20
2.3.3 敏捷的SDL 23
2.3.4 ISO/IEC 27034 25
2.4 McGraw的軟體安全開發模型 26
2.4.1 McGraw的七個接觸點模型BSI 26
2.4.2 軟體安全開發成熟度模型BSIMM 27
2.5 OWASP的軟體安全開發模型 30
2.5.1 CLASP 30
2.5.2 SAMM 33
2.6 NIST的軟體安全開發生命周期 34
2.7 屬性驅動的軟體安全開發生命周期模型 36
2.8 本章小結 36
第3章 軟體安全需求分析 37
3.1 概述 37
3.1.1 基本內涵 37
3.1.2 安全需求的來源 39
3.1.3 軟體安全需求的內容 39
3.2 核心軟體安全需求 40
3.2.1 保密性需求 40
3.2.2 完整性需求 42
3.2.3 可用性需求 43
3.2.4 認證需求 44
3.2.5 授權需求 46
3.2.6 可記賬性/審計需求 50
3.3 通用軟體安全需求 51
3.3.1 安全架構需求 51
3.3.2 會話管理需求 51
3.3.3 錯誤和例外管理需求 52
3.3.4 配置參數管理需求 52
3.4 運維安全需求 52
3.4.1 環境部署需求 53
3.4.2 歸檔需求 54
3.4.3 反盜版需求 54
3.5 其他安全需求 55
3.5.1 順序和時間需求 55
3.5.2 國際性需求 55
3.5.3 採購需求 56
3.6 軟體安全需求獲取方法 57
3.6.1 軟體安全需求獲取的概念 57
3.6.2 頭腦風暴 57
3.6.3 問卷調查和訪談 58
3.6.4 策略分解 58
3.6.5 數據分類 60
3.6.6 主/客體關係矩陣 62
3.6.7 使用用例和濫用案例建模 62
3.7 軟體安全需求跟蹤矩陣 63
3.8 本章小結 64
第4章 軟體安全保障設計 65
4.1 概述 65
4.1.1 軟體安全設計的概念 65
4.1.2 軟體安全設計的基本原則 65
4.1.3 平衡安全設計原則 71
4.2 屬性驅動的軟體安全設計 72
4.3 軟體安全架構設計 73
4.3.1 康威定律 73
4.3.2 軟體安全架構的設計方法 74
4.3.3 攻擊面評估 75
4.3.4 威脅建模 75
4.3.5 風險分析 82
4.3.6 軟體架構的選擇 86
4.3.7 軟體架構的安全考慮 92
4.3.8 與現有架構的集成 93
4.4 基於核心安全需求的軟體安全設計 94
4.4.1 保密性設計 94
4.4.2 完整性設計 99
4.4.3 可用性設計 101
4.4.4 認證設計 102
4.4.5 授權設計 103
4.4.6 可記賬性/審計設計 103
4.5 其他安全需求設計 104
4.5.1 接口安全設計 104
4.5.2 互聯互通性 106
4.6 軟體安全技術 106
4.6.1 認證 106
4.6.2 身份管理 107
4.6.3 憑證管理 109
4.6.4 流控制 112
4.6.5 防火牆和網路代理 113
4.6.6 中間件 114
4.6.7 排隊基礎設施和技術 114
4.6.8 日誌與審計 114
4.6.9 入侵檢測系統 115
4.6.10 入侵防禦系統 116
4.6.11 數據丟失保護 116
4.6.12 虛擬化 117
4.6.13 數字著作權管理 118
4.6.14 可信計算 120
4.6.15 資料庫安全 121
4.6.16 程式語言環境 128
4.6.17 公共語言運行庫 130
4.6.18 Java虛擬機 131
4.6.19 編譯器選項 132
4.6.20 作業系統安全 132
4.6.21 嵌入式系統安全 133
4.7 安全架構與設計檢查 134
4.8 本章小結 135
第5章 編寫安全的代碼 136
5.1 概述 136
5.1.1 漏洞的基本概念 136
5.1.2 漏洞分類 137
5.1.3 漏洞產生的原因 138
5.1.4 通用軟體漏洞資料庫 139
5.1.5 軟體安全編碼實踐與控制 141
5.2 常見軟體漏洞類型分析與防禦方法 142
5.2.1 緩衝區溢出 142
5.2.2 注入缺陷 145
5.2.3 認證和會話管理 149
5.2.4 跨站腳本攻擊XSS 152
5.2.5 不安全的直接對象引用 154
5.2.6 安全配置錯誤 156
5.2.7 敏感數據泄露 157
5.2.8 加密機制本身的安全問題 162
5.2.9 缺少功能級檢查 163
5.2.10 跨站請求偽造CSRF 164
5.2.11 使用已知漏洞組件 167
5.2.12 未經驗證的重定向和轉發 167
5.2.13 檔案攻擊 168
5.2.14 競爭條件 171
5.2.15 邊信道攻擊 172
5.3 軟體安全編碼實踐 174
5.3.1 輸入驗證 174
5.3.2 標準化 176
5.3.3 數據淨化 177
5.3.4 錯誤處理 178
5.3.5 安全的API 178
5.3.6 記憶體管理 179
5.3.7 例外管理 182
5.3.8 會話管理 183
5.3.9 配置參數管理 183
5.3.10 安全啟動 184
5.3.11 加密機制的安全保護 184
5.3.12 並發控制 186
5.3.13 標籤化 187
5.3.14 沙箱 188
5.3.15 防篡改技術 188
5.4 軟體安全編碼保證過程 190
5.4.1 選擇安全的程式語言 190
5.4.2 版本(配置)管理 190
5.4.3 代碼分析 191
5.4.4 代碼評審 192
5.4.5 構建安全的軟體編譯環境 194
5.5 本章小結 195
第6章 軟體安全測試 196
6.1 概述 196
6.1.1 軟體安全測試的定義和目的 196
6.1.2 軟體安全測試的基本內涵 196
6.1.3 軟體安全測試框架 199
6.1.4 軟體安全測試方法 200
6.1.5 從攻擊者角度思考 201
6.2 軟體安全功能測試 201
6.2.1 保密性測試 201
6.2.2 完整性測試 202
6.2.3 可用性測試 205
6.2.4 認證性測試 206
6.2.5 授權測試 207
6.2.6 可記賬性/審計測試 207
6.3 軟體安全漏洞測試 208
6.3.1 攻擊面驗證 208
6.3.2 環境測試 208
6.3.3 模擬測試 209
6.4 其他測試 210
6.4.1 性能測試 210
6.4.2 可擴展性測試 211
6.4.3 隱私測試 211
6.5 軟體安全功能測試方法 212
6.5.1 單元測試 212
6.5.2 集成測試 213
6.5.3 回歸測試 213
6.5.4 系統測試 214
6.5.5 邏輯測試 214
6.5.6 用戶接收測試 215
6.6 軟體安全漏洞測試方法 216
6.6.1 原始碼測試 216
6.6.2 白盒測試 216
6.6.3 黑盒測試 217
6.6.4 Fuzzing測試 218
6.6.5 掃描 219
6.6.6 滲透測試 222
6.6.7 靜態測試 224
6.6.8 動態測試 225
6.7 幾種重要的軟體安全漏洞控制測試 225
6.7.1 輸入驗證測試 225
6.7.2 緩衝區溢出控制測試 226
6.7.3 SQL注入缺陷控制測試 226
6.7.4 XSS腳本攻擊控制測試 227
6.7.5 抗抵賴控制測試 227
6.7.6 假冒控制測試 228
6.7.7 失效控制測試 228
6.7.8 優先權提升控制測試 228
6.7.9 抗逆向工程保護測試 229
6.7.10 Web套用漏洞測試 229
6.8 測試過程模型 230
6.8.1 軟體安全測試基本過程 230
6.8.2 V模型 231
6.8.3 W模型 231
6.8.4 X模型 232
6.8.5 H模型 232
6.8.6 前置測試模型 233
6.8.7 基於軟體開發生命周期的測試 234
6.9 測試數據的管理 236
6.9.1 漏洞報告和跟蹤 238
6.9.2 漏洞影響評估與修復 242
6.10 常見的軟體安全測試工具 242
6.11 本章小結 242
附錄A 軟體安全開發生命周期模型 243
附錄B 常見的HTTP狀態代碼和原因解釋 245
附錄C 用於輸入驗證的正則表達式語法 247
附錄D 常用軟體測試工具 249
參考文獻 251

相關詞條

熱門詞條

聯絡我們