本書(shū)分為兩大部分,共15章。第一部分包含第1~4章,介紹了安全代碼審查的作用和方法,以及在軟件安全開(kāi)發(fā)生命周期(S-SDLC)代碼審查過(guò)程中查找安全漏洞的方法。第二部分包含第5~15章,介紹2013年版《OWASP Top 10》中提出的安全風(fēng)險的處理方法和技術(shù),以及其他漏洞處理的方法和技術(shù)。本書(shū)適合軟件研發(fā)組織機構的高層管理人員、專(zhuān)業(yè)技術(shù)負責人、開(kāi)發(fā)人員、測試人員和軟件安全人員,以及高等院校軟件工程、網(wǎng)絡(luò )安全專(zhuān)業(yè)的師生等閱讀學(xué)習。
OWASP基金會(huì )是一個(gè)開(kāi)源的、非盈利的全球性安全組織,致力于應用軟件的安全研究,在業(yè)界具有一流的影響力和**性。作為OWASP面向中國的區域分支,OWASP中國自2006年正式啟動(dòng),目前已擁有來(lái)自互聯(lián)網(wǎng)安全專(zhuān)業(yè)領(lǐng)域和政府、電信、金融、教育等相關(guān)領(lǐng)域的會(huì )員5000多名,形成了強大的專(zhuān)業(yè)技術(shù)實(shí)力和行業(yè)資源聚集能力,有力推動(dòng)了安全標準、安全測試工具、安全指導手冊等應用安全技術(shù)在中國的發(fā)展,成為了積極推動(dòng)中國互聯(lián)網(wǎng)安全技術(shù)創(chuàng )新、人才培養和行業(yè)發(fā)展的中堅力量。作為OWASP中國的運營(yíng)中心,互聯(lián)網(wǎng)安全研究中心(Security Zone,簡(jiǎn)稱(chēng)SecZone)是國內**獨立、開(kāi)源的互聯(lián)網(wǎng)安全研究機構。中心始終秉持引入、吸收、創(chuàng )新的發(fā)展宗旨,專(zhuān)注于互聯(lián)網(wǎng)安全前沿技術(shù)和OWASP項目的深度研究,常年組織開(kāi)展各類(lèi)開(kāi)源培訓及沙龍活動(dòng),致力于通過(guò)對國內外技術(shù)、資源的整合、應用和創(chuàng )新,更好地服務(wù)業(yè)界同仁、服務(wù)行業(yè)發(fā)展,更有力地推動(dòng)國內互聯(lián)網(wǎng)安全技術(shù)的進(jìn)步與升級。
第1章 如何使用《應用軟件安全代碼審查指南》 1
第2章 安全代碼審查 4
2.1 為什么代碼有漏洞 5
2.2 代碼審查和安全代碼審查之間的區別是什么 6
2.3 什么是安全代碼審查 6
2.4 確定安全代碼審查的范圍 7
2.5 我們不能破解自己的安全性 9
2.6 安全代碼審查和滲透測試耦合 11
2.7 安全代碼審查對開(kāi)發(fā)實(shí)踐的好處 13
2.8 安全代碼審查的技術(shù) 15
2.9 安全代碼審查與合規性 15
第3章 安全代碼審查的方法論 18
3.1 制定安全代碼審查流程時(shí)需要考慮的因素 19
3.1.1 風(fēng)險 19
3.1.2 目的與背景 19
3.1.3 代碼行數 19
3.1.4 編程語(yǔ)言 20
3.1.5 資源、時(shí)間和期限 20
3.2 在S-SDLC中集成安全代碼審查 20
3.3 何時(shí)進(jìn)行安全代碼審查 21
3.4 敏捷和瀑布開(kāi)發(fā)中的安全代碼審查 23
3.5 基于風(fēng)險的安全代碼審查方法 23
3.6 安全代碼審查準備 26
3.7 安全代碼審查發(fā)現和信息收集 28
3.8 靜態(tài)代碼分析 30
3.9 應用威脅建模 34
3.10 度量指標和安全代碼審查 42
3.11 代碼爬行 45
第4章 安全代碼審查注意事項 47
第5章 A1注入攻擊 49
5.1 概述 50
5.2 概覽 50
5.3 SQL盲注 51
5.3.1 SQL查詢(xún)參數化 51
5.3.2 安全的字符串拼接 52
5.3.3 運用靈活的參數化語(yǔ)句 53
5.3.4 PHP SQL注入 54
5.3.5 Java SQL注入 55
5.3.6 .NET SQL注入 55
5.3.7 參數集合 56
5.4 要點(diǎn)回顧 57
5.5 OWASP參考資料 57
5.6 其他參考資料 58
第6章 A2失效的身份認證和會(huì )話(huà)管理 59
6.1 失效的身份認證 60
6.1.1 概述 60
6.1.2 概覽 60
6.1.3 如何審查 60
6.1.4 參考資料 62
6.1.5 被遺忘的密碼 62
6.1.6 驗證碼 64
6.1.7 帶外通信 66
6.2 A2會(huì )話(huà)管理 68
6.2.1 概述 68
6.2.2 概覽 68
6.2.3 審查的內容 69
6.2.4 會(huì )話(huà)超時(shí) 70
6.2.5 會(huì )話(huà)注銷(xiāo)和結束 71
6.2.6 會(huì )話(huà)管理的服務(wù)器端防御 72
第7章 A3跨站腳本攻擊(XSS) 74
7.1 什么是跨站腳本攻擊(XSS) 75
7.2 概覽 75
7.3 如何審查 75
7.3.1 安全代碼審查需要詳盡 75
7.3.2 工具介紹 76
7.4 OWASP參考資料 77
7.5 其他參考資料 77
第8章 A4不安全的直接對象引用 79
8.1 概述 80
8.2 概覽 80
8.3 如何審查 80
8.3.1 SQL注入 80
8.3.2 HTTP POST請求 81
8.3.3 間接引用映射 81
8.3.4 數據綁定技術(shù) 82
8.3.5 安全設計建議 82
8.3.6 審查準則 82
8.4 安全代碼審查人員應該做什么 82
8.5 MVC.NET中的綁定問(wèn)題 83
8.5.1 相應的視圖(HTML) 83
8.5.2 建議 84
8.6 參考資料 84
第9章 A5安全配置錯誤 85
9.1 Apache Struts 86
9.2 Java企業(yè)版聲明配置 87
9.3 JEE注釋 91
9.4 框架特定配置:Apache Tomcat 92
9.5 框架特定配置:Jetty 93
9.6 框架特定配置:JBoss AS 94
9.7 框架特定配置:Oracle WebLogic 94
9.8 程序配置:JEE 95
9.9 Microsoft IIS 97
9.10 框架特定配置:Microsoft II 99
9.11 程序配置:Microsoft IIS 102
9.12 進(jìn)一步的IIS配置 103
9.12.1 過(guò)濾請求和URL重寫(xiě) 103
9.12.2 參考資料 111
9.13 強名稱(chēng) 111
9.13.1 如何使用強名稱(chēng) 112
9.13.2 參考資料 115
9.14 Round Tripping 115
9.14.1 混淆的重要性 116
9.14.2 使用混淆 116
9.14.3 ASPNetCon?gs 116
9.14.4 參考資料 118
9.15 .NET驗證控件 118
第10章 A6敏感數據暴露 124
10.1 加密控制 125
10.1.1 概述 125
10.1.2 審查內容:傳輸保護 127
10.1.3 審查內容:存儲保護 129
10.1.4 加密、哈希和鹽值 135
10.1.5 參考資料 138
10.2 減少攻擊面 139
10.2.1 概述 139
10.2.2 審查內容 140
10.2.3 參考資料 141
第11章 A7功能級權限控制缺失 142
11.1 授權 143
11.2 概述 144
11.3 注意事項 146
11.4 訪(fǎng)問(wèn)控制備忘單 148
11.4.1 硬編碼方法 148
11.4.2 防御訪(fǎng)問(wèn)控制攻擊 148
第12章 A8跨站請求偽造(CSRF) 150
12.1 概述 151
12.2 CSRF的工作原理 152
12.3 注意事項 153
12.3.1 無(wú)效的防御措施 153
12.3.2 高風(fēng)險功能 154
12.3.3 防御CSRF攻擊 154
第13章 A9使用含有已知漏洞的組件 159
13.1 概述 160
13.2 注意事項 160
第14章 A10未經(jīng)驗證的重定向和轉發(fā) 162
14.1 概述 163
14.2 注意事項 164
14.3 參考資料 166
第15章 其他技術(shù) 167
15.1 HTML5 168
15.1.1 概述 168
15.1.2 注意事項:Web信息傳遞 168
15.1.3 注意事項:跨源資源共享 169
15.1.4 注意事項:WebSockets 170
15.1.5 注意事項:服務(wù)器推送事件 172
15.2 同源策略 172
15.2.1 概述 172
15.2.2 注意事項 173
15.3 審計日志代碼 174
15.3.1 概述 174
15.3.2 注意事項 175
15.3.3 參考資料 176
15.4 錯誤處理 177
15.4.1 概述 177
15.4.2 注意事項 178
15.4.3 注意事項:安全的失敗 180
15.4.4 注意事項:潛在漏洞代碼 180
15.4.5 注意事項:IIS錯誤處理 183
15.4.6 注意事項:在A(yíng)pache中處理錯誤 185
15.4.7 注意事項:領(lǐng)先的實(shí)踐錯誤處理 186
15.4.8 注意事項:捕獲異常的順序 187
15.4.9 注意事項:釋放資源和良好的資源管理 188
15.4.10 參考資料 190
15.5 查看安全警報 190
15.5.1 概述 190
15.5.2 注意事項 192
15.6 檢查主動(dòng)防御 193
15.6.1 概述 193
15.6.2 注意事項 194
15.6.3 參考資料 196
15.7 競爭條件 196
15.7.1 概述 196
15.7.2 注意事項 197
15.7.3 參考資料 198
15.8 緩沖區溢出 198
15.8.1 概述 198
15.8.2 注意事項:緩沖區溢出 200
15.8.3 注意事項:格式函數溢出 201
15.8.4 注意事項:整數溢出 202
15.8.5 參考資料 204
附錄A 軟件安全開(kāi)發(fā)生命周期圖表 205
附錄B 安全代碼審查清單 210
附錄C 威脅建模示例 214
C.1 威脅建模示例步驟1:分解應用 214
C.2 威脅建模示例步驟2:威脅分類(lèi) 219
C.3 威脅建模示例步驟3:確定對策 221
附錄D 代碼爬蟲(chóng) 224
D.1 在.NET中搜索代碼 224
D.2 在Java中搜索代碼 230
D.3 在經(jīng)典ASP中搜索代碼 234
D.4 在JavaScript和Ajax中搜索代碼 236
D.5 在C++和Apache中搜索代碼 236
附錄E 參考資料 239