安全軟件開發之道-構築軟件安全的本質方法 (Building Secure Software: How to Avoid Security Problems the Right Way) 安全软件开发之道:构筑软件安全的本质方法

維格 (John Viega), 麥格勞 (Gary McGraw)

  • 出版商: 機械工業
  • 出版日期: 2014-03-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 314
  • 裝訂: 平裝
  • ISBN: 7111459156
  • ISBN-13: 9787111459156
  • 相關分類: 資訊安全
  • 無法訂購

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

維格、麥格勞編著的《安全軟件開發之道(構築軟件安全的本質方法)》被譽為安全技術領域的「黃帝內經」,由安全技術大師親力打造,暢銷全球,數碼安全技術專家聯袂推薦。綜合論述如何在軟件開發整個生命周期內建立安全屏障,對於設計安全的軟件給出了高屋建瓴的指南,全面翔實,深入淺出。對於任何關註安全軟件開發的人來說,都是一本必備之書。
    《安全軟件開發之道(構築軟件安全的本質方法)》分為兩大部分。第一部分介紹在編寫代碼之前應該瞭解的軟件安全知識,講解如何在軟件工程的實踐中引入安全性,任何涉及軟件開發的人都應該閱讀。主要內容包括:軟件安全概論、軟件安全風險管理、技術的選擇、開放源代碼和封閉源代碼、軟件安全的指導原則、軟件審計。第二部分涉及軟件開發實現的細節,介紹如何在編程中避免一些常見的安全問題,適合編程一線的技術人員參考。主要內容包括:緩衝區溢出、訪問控制、競爭條件、隨機性和確定性、密碼學的應用、信任管理和輸入驗證、口令認證、數據庫安全、客戶端安全、穿越防火牆等。

<目錄>

第1章 軟件安全概論  1
  1.1 都是軟件惹的禍  1
  1.2 對安全問題的處理  4
  1.2.1 Bugtraq  5
  1.2.2 CERT 公告  5
  1.2.3 RISKS文摘  6
  1.3 影響軟件安全的技術趨勢  6
  1.4 非功能性需求  9
  1.4.1 什麼是安全  10
  1.4.2 難道只是可靠性  10
  1.5 「滲透-修補」是個壞方法  11
  1.6 藝術和工程  12
  1.7 安全目標  12
  1.7.1 預防  13
  1.7.2 跟蹤與審計  13
  1.7.3 監控  13
  1.7.4 隱私和保密  14
  1.7.5 多級安全  14
  1.7.6 匿名  14
  1.7.7 認證  15
  1.7.8 完整性  16
  1.8 常見軟件安全缺陷  16
  1.9 軟件項目目標  17
  1.10 結論  18
第2章 軟件安全風險管理  19
  2.1 軟件安全風險管理概述  19
  2.2 安全人員的任務  21
  2.3 軟件生命周期中的軟件安全人員  22
  2.3.1 獲取需求  22
  2.3.2 風險評估  23
  2.3.3 安全設計  24
  2.3.4 實現  25
  2.3.5 安全測試  25
  2.4 現實的權衡  26
  2.5 讓人們去思考安全性  26
  2.6 軟件風險管理實踐  26
  2.6.1 當開發走向歧途  27
  2.6.2 當安全分析走向歧途  27
  2.7 通用準則  28
  2.8 結論  30
第3章 技術的選擇  31
  3.1 語言的選擇  31
  3.2 分佈式對象平臺的選擇  34
  3.2.1 COBRA  34
  3.2.2 DCOM  35
  3.2.3 EJB和RMI  37
  3.3 操作系統的選擇  37
  3.4 認證技術  38
  3.4.1 基於主機的認證  39
  3.4.2 物理令牌  40
  3.4.3 生物認證  40
  3.4.4 密碼認證  41
  3.4.5 深度防禦與認證  41
  3.5 結論  42
第4章 開放源代碼和封閉源代碼  43
  4.1 通過隱藏實現安全  43
  4.1.1 逆向工程  45
  4.1.2 代碼混淆  46
  4.1.3 緊包軟件的安全  47
  4.1.4 通過隱藏實現安全並非萬能  47
  4.2 開源軟件  47
  4.3 「多眼球現象」是真的嗎  47
  4.3.1 漏洞檢測是困難的  49
  4.3.2 其他的憂慮  50
  4.4 關於發布加密演算法  51
  4.5 另外兩個關於開源的謬論  51
  4.5.1 微軟謬論  51
  4.5.2 Java謬論  52
  4.6 例子:GNU Mailman的安全  52
  4.7 證據:特洛伊木馬  53
  4.8 開放源碼還是不開放源碼  54
  4.9 另一個來自於緩衝區溢出的安全教訓  54
  4.10 忠告  55
  4.11 結論  55
第5章 軟件安全的指導原則  56
  5.1 確保最薄弱環節的安全  57
  5.2 深度防禦  59
  5.3 失效安全  60
  5.4 最小特權  62
  5.5 分割  63
  5.6 盡可能簡單  64
  5.7 提升隱私權  66
  5.8 記住隱藏信息很困難  68
  5.9 不要輕信  69
  5.10 使用社會資源  70
  5.11 結論  70
第6章 軟件審計  71
  6.1 架構的安全性分析  73
  6.1.1 攻擊樹  74
  6.1.2 報告分析結果  78
  6.2 實現安全性分析  79
  6.2.1 審計源代碼  79
  6.2.2 源碼級的安全審計工具  80
  6.2.3 在分析中使用RATS  81
  6.2.4 安全掃描軟件的有效性  82
  6.3 結論  83
第7章 緩衝區溢出  84
  7.1 什麼是緩衝區溢出  86
  7.2 為什麼緩衝溢出是安全問題  87
  7.3 緩衝區溢出的防禦  89
  7.4 主要的陷阱   89
  7.5 內部緩衝區溢出  93
  7.6 更多的輸入溢出  93
  7.7 其他風險  94
  7.8 幫助工具  94
  7.9 堆破壞和棧破壞  96
  7.10 堆溢出  98
  7.11 棧溢出  101
  7.11.1 破譯堆棧  101
  7.11.2 陷入無限循環……並更糟 105
  7.12 代碼攻擊  113
  7.12.1 UNIX漏洞利用  114
  7.12.2 關於Windows  119
  7.13 結論  119
第8章 訪問控制  120
  8.1 UNIX訪問控制模型  120
  8.1.1 UNIX權限工作原理  121
  8.1.2 修改文件屬性  122
  8.1.3 修改文件的所有權  124
  8.1.4 umask命令  125
  8.1.5 編程接口  125
  8.1.6 Setuid編程  127
  8.2 Windows NT的訪問控制  130
  8.3 分割  132
  8.4 細粒度權限  134
  8.5 結論  134
第9章 競爭條件  135
  9.1 什麼是競爭條件  135
  9.2 檢查時間與使用時間  138
  9.2.1 攻破passwd  139
  9.2.2 避免 TOCTOU 問題  142
  9.3 安全的文件訪問  143
  9.4 臨時文件  146
  9.5 文件鎖定  146
  9.6 其他競爭條件  147
  9.7 結論  148
第10章 隨機性和確定性  149
  10.1 偽隨機數發生器  149
  10.1.1 偽隨機數發生器實例  151
  10.1.2 Blum-Blum-ShubPRNG  152
  10.1.3 Tiny PRNG  153
  10.1.4 對PRNG的攻擊  153
  10.1.5 在網絡賭博遊戲中作弊  153
  10.1.6 PRNG的統計測試  155
  10.2 熵的收集和估計  155
  10.2.1 硬件解決方案  156
  10.2.2 軟件解決方案  158
  10.2.3 糟糕的熵收集示例  163
  10.3 處理熵  164
  10.4 實用的隨機數據來源  166
  10.4.1 Tiny  166
  10.4.2 Windows的隨機數據  167
  10.4.3 Linux的隨機數  167
  10.4.4 Java中的隨機數  169
  10.5 結論  171
第11章 密碼學的應用  172
  11.1 一般性建議  172
  11.1.1 開發者並不是密碼專家  173
  11.1.2 數據完整性  174
  11.1.3 密碼出口的有關法律  174
  11.2 常用密碼庫  175
  11.2.1 Cryptlib  175
  11.2.2 OpenSSL  176
  11.2.3 Crypto++  177
  11.2.4 BSAFE  178
  11.2.5 Cryptix  179
  11.3 利用密碼學編程  180
  11.3.1 加密  180
  11.3.2 散列演算法  184
  11.3.3 公共密鑰加密  185
  11.3.4 多線程  189
  11.3.5 cookie加密  189
  11.4 加密散列更多的應用  191
  11.5 SSL和TLS  192
  11.6 Stunnel  194
  11.7 一次一密  195
  11.8 結論  198
第12章 信任管理和輸入驗證  199
  12.1 關於信任  200
  12.2 不恰當信任的例子  201
  12.2.1 信任是傳遞的  201
  12.2.2 預防惡意的調用者  204
  12.2.3 安全地調用其他程序  208
  12.2.4 源自Web的問題  210
  12.2.5 客戶端安全  212
  12.2.6 Perl問題  214
  12.2.7 格式字符串攻擊  215
  12.3 自動檢測輸入問題  216
  12.4結論  219
第13章 口令認證  220
  13.1  口令存儲  220
  13.2  向口令數據庫中添加用戶  222
  13.3  口令認證的方式  231
  13.4  口令選擇  235
  13.4.1  更多的建議  236
  13.4.2  擲骰子  237
  13.4.3  口令短語  240
  13.4.4  應用程序選擇的口令  241
  13.5  一次性口令  242
  13.6  結論  252

第14章 數據庫安全  253
  14.1  基礎知識  253
  14.2  訪問控制  254
  14.3  在訪問控制中使用視圖  256
  14.4  字段保護  257
  14.5  針對統計攻擊的安全防衛  260
  14.6  結論  263
第15章 客戶端安全  264
  15.1  版權保護方案  266
  15.1.1  許可證文件  273
  15.1.2  防範偶然性盜版  274
  15.1.3  其他的許可證特性  275
  15.1.4  其他的版權保護方案  275
  15.1.5  對不可信客戶端的身份認證  276
  15.2  防篡改  277
  15.2.1  反調試措施  277
  15.2.2  校驗和  279
  15.2.3  應對濫用  279
  15.2.4  誘餌  280
  15.3  代碼混淆  280
  15.3.1  基本的代碼混淆技術  281
  15.3.2  加密部分程序  282
  15.4  結論  284
第16章 穿越防火牆  285
  16.1  基本策略  285
  16.2  客戶端代理  287
  16.3  服務器代理  288
  16.4  SOCKS  289
  16.5  對等網絡  290
  16.6  結論  292
  附錄A 密碼學基礎  293
參考文獻  31