第1篇 引子
故事一:傢有一IT,如有一寶 2
故事二:微博上的蠕蟲 3
故事三:明文密碼 5
故事四:IT青年VS禪師 5
第2篇 基礎篇
第1章 Web應用技術 8
1.1 HTTP簡介 8
1.2 HTTPS簡介 10
1.3 URI 11
1.3.1 URL 11
1.3.2 URI/URL/URN 12
1.3.3 URI比較 13
1.4 HTTP消息 13
1.4.1 HTTP方法 14
1.4.2 HTTP狀態碼 19
1.5 HTTP Cookie 20
1.5.1 HTTP Cookie的作用 22
1.5.2 HTTP Cookie的缺點 23
1.6 HTTP session 23
1.7 HTTP的安全 24
第2章 OWASP 27
2.1 OWASP簡介 27
2.2 OWASP風險評估方法 28
2.3 OWASP Top 10 34
2.4 ESAPI(Enterprise Security API) 35
第3篇 工具篇
第3章 Web服務器工具簡介 38
3.1 Apache 38
3.2 其他Web服務器 39
第4章 Web瀏覽器以及調試工具 42
4.1 瀏覽器簡介 42
4.1.1 基本功能 42
4.1.2 主流瀏覽器 43
4.1.3 瀏覽器內核 44
4.2 開發調試工具 45
第5章 滲透測試工具 47
5.1 Fiddler 47
5.1.1 工作原理 47
5.1.2 如何捕捉HTTPS會話 48
5.1.3 Fiddler功能介紹 49
5.1.4 Fiddler擴展功能 56
5.1.5 Fiddler第三方擴展功能 56
5.2 ZAP 58
5.2.1 斷點調試 60
5.2.2 編碼/解碼 61
5.2.3 主動掃描 62
5.2.4 Spider 63
5.2.5 暴力破解 64
5.2.6 端口掃描 65
5.2.7 Fuzzer 66
5.2.8 API 66
5.3 WebScrab 67
5.3.1 HTTP代理 67
5.3.2 Manual Request 69
5.3.3 Spider 70
5.3.4 Session ID分析 71
5.3.5 Bean Shell的支持 71
5.3.6 Web編碼和解碼 73
第6章 掃描工具簡介 74
6.1 萬能的掃描工具——WebInspect 74
6.1.1 引言 74
6.1.2 WebInspect特性 74
6.1.3 環境準備 74
6.1.4 HP WebInspect總覽 76
6.1.5 Web網站測試 79
6.1.6 企業測試 86
6.1.7 生成報告 88
6.2 開源掃描工具——w3af 91
6.2.1 w3af概述 91
6.2.2 w3af環境配置 92
6.2.3 w3af使用示例 93
6.3 被動掃描的利器——Ratproxy 94
6.3.1 Ratproxy概述 94
6.3.2 Ratproxy環境配置 95
6.3.3 Ratproxy運行 96
第7章 漏洞學習網站 98
7.1 WebGoat 98
7.2 DVWA 99
7.3 其他的漏洞學習網站 99
第4篇 攻防篇
第8章 代碼注入 102
8.1 注入的分類 104
8.1.1 OS命令注入 104
8.1.2 XPath注入 109
8.1.3 LDAP注入 114
8.1.4 SQL注入 118
8.1.5 JSON注入 131
8.1.6 URL參數注入 133
8.2 OWASP ESAPI與注入問題的預防 135
8.2.1 命令注入的ESAPI預防 135
8.2.2 XPath注入的ESAPI預防 138
8.2.3 LDAP注入的ESAPI預防 138
8.2.4 SQL注入的ESAPI預防 141
8.2.5 其他注入的ESAPI預防 143
8.3 注入預防檢查列錶 143
8.4 小結 144
第9章 跨站腳本(XSS) 146
9.1 XSS簡介 146
9.2 XSS分類 146
9.2.1 反射式XSS 146
9.2.2 存儲式XSS 148
9.2.3 基於DOM的XSS 149
9.2.4 XSS另一種分類法 151
9.3 XSS危害 154
9.4 XSS檢測 156
9.4.1 手動檢測 156
9.4.2 半自動檢測 158
9.4.3 全自動檢測 158
9.5 XSS的預防 159
9.5.1 一刀切 159
9.5.2 在服務器端預防 160
9.5.3 在客戶端預防 168
9.5.4 富文本框的XSS預防措施 170
9.5.5 CSS 172
9.5.6 FreeMarker 174
9.5.7 OWASP ESAPI與XSS的預防 177
9.6 XSS檢查列錶 183
9.7 小結 184
第10章 失效的身份認證和會話管理 185
10.1 身份認證和會話管理簡介 185
10.2 誰動瞭我的琴弦——會話劫持 186
10.3 請君入甕——會話固定 188
10.4 我很含蓄——非直接會話攻擊 191
10.5 如何測試 199
10.5.1 會話固定測試 199
10.5.2 用Web Scrab分析會話ID 200
10.6 如何預防會話攻擊 202
10.6.1 如何防治固定會話 202
10.6.2 保護你的會話令牌 204
10.7 身份驗證 208
10.7.1 雙因子認證流程圖 209
10.7.2 雙因子認證原理說明 210
10.7.3 隱藏在QR Code裏的秘密 211
10.7.4 如何在服務器端實現雙因子認證 212
10.7.5 我沒有智能手機怎麼辦 216
10.8 身份認證設計的基本準則 216
10.8.1 密碼長度和復雜性策略 216
10.8.2 實現一個安全的密碼恢復策略 217
10.8.3 重要的操作應通過HTTPS傳輸 217
10.8.4 認證錯誤信息以及賬戶鎖定 219
10.9 檢查列錶 219
10.9.1 身份驗證和密碼管理檢查列錶 219
10.9.2 會話管理檢查列錶 220
10.10 小結 221
第11章 不安全的直接對象引用 222
11.1 坐一望二——直接對象引用 222
11.2 不安全直接對象引用的危害 224
11.3 其他可能的不安全直接對象引用 224
11.4 不安全直接對象引用的預防 225
11.5 如何使用OWASP ESAPI預防 227
11.6 直接對象引用檢查列錶 230
11.7 小結 230
第12章 跨站請求僞造(CSRF) 232
12.1 CSRF簡介 232
12.2 誰動瞭我的奶酪 232
12.3 跨站請求僞造的攻擊原理 233
12.4 剝繭抽絲見真相 235
12.5 其他可能的攻擊場景 236
12.5.1 傢用路由器被CSRF攻擊 236
12.5.2 彆以為用POST你就躲過瞭CSRF 238
12.5.3 寫一個自己的CSRF Redirector 241
12.5.4 利用重定嚮欺騙老實人 243
12.6 跨站請求僞造的檢測 245
12.6.1 手工檢測 245
12.6.2 半自動CSRFTester 246
12.7 跨站請求僞造的預防 250
12.7.1 用戶需要知道的一些小技巧 250
12.7.2 增加一些確認操作 250
12.7.3 重新認證 250
12.7.4 加入驗證碼(CAPTCHA) 250
12.7.5 ESAPI解決CSRF 250
12.7.6 CSRFGuard 256
12.8 CSRF檢查列錶 260
12.9 小結 261
第13章 安全配置錯誤 262
13.1 不能說的秘密——Google hacking 262
13.2 Tomcat那些事 264
13.3 安全配置錯誤的檢測與預防 264
13.3.1 係統配置 264
13.3.2 Web應用服務器的配置 268
13.3.3 數據庫 282
13.3.4 日誌配置 284
13.3.5 協議 285
13.3.6 開發相關的安全配置 291
13.3.7 編譯器的安全配置 302
13.4 安全配置檢查列錶 305
13.5 小結 307
第14章 不安全的加密存儲 308
14.1 關於加密 310
14.1.1 加密算法簡介 310
14.1.2 加密算法作用 312
14.1.3 加密分類 313
14.2 加密數據分類 314
14.3 加密數據保護 315
14.3.1 密碼的存儲與保護 315
14.3.2 重要信息的保護 323
14.3.3 密鑰的管理 336
14.3.4 數據的完整性 339
14.3.5 雲係統存儲安全 342
14.3.6 數據保護的常犯錯誤 343
14.4 如何檢測加密存儲數據的安全性 344
14.4.1 審查加密內容 344
14.4.2 已知答案測試(Known Answer Test) 344
14.4.3 自發明加密算法的檢測 345
14.4.4 AES加密算法的測試 345
14.4.5 代碼審查 346
14.5 如何預防不安全的加密存儲的數據 347
14.6 OWASP ESAPI與加密存儲 348
14.6.1 OWASP ESAPI與隨機數 353
14.6.2 OWASP ESAPI 與FIPS 140-2 354
14.7 加密存儲檢查列錶 355
14.8 小結 355
第15章 沒有限製的URL訪問 357
15.1 掩耳盜鈴——隱藏(Disable)頁麵按鈕 357
15.2 權限認證模型 358
15.2.1 自主型訪問控製 360
15.2.2 強製型訪問控製 360
15.2.3 基於角色的訪問控製 361
15.3 繞過認證 363
15.3.1 網絡嗅探 364
15.3.2 默認或者可猜測用戶賬號 364
15.3.3 直接訪問內部URL 364
15.3.4 修改參數繞過認證 365
15.3.5 可預測的SessionID 365
15.3.6 注入問題 365
15.3.7 CSRF 365
15.3.8 繞過認證小結 366
15.4 繞過授權驗證 367
15.4.1 水平越權 368
15.4.2 垂直越權 369
15.5 文件上傳與下載 373
15.5.1 文件上傳 373
15.5.2 文件下載和路徑遍曆 377
15.6 靜態資源 382
15.7 後颱組件之間的認證 383
15.8 SSO 385
15.9 OWASP ESAPI與授權 386
15.9.1 AccessController的實現 387
15.9.2 一個AccessController的代碼示例 390
15.9.3 我們還需要做些什麼 391
15.10 訪問控製檢查列錶 393
15.11 小結 393
第16章 傳輸層保護不足 395
16.1 臥底的故事——對稱加密和非對稱加密 395
16.2 明文傳輸問題 396
16.3 有什麼危害 398
16.3.1 會話劫持 398
16.3.2 中間人攻擊 399
16.4 預防措施 399
16.4.1 密鑰交換算法 400
16.4.2 對稱加密和非對稱加密結閤 401
16.4.3 SSL/TLS 406
16.5 檢查列錶 423
16.6 小結 423
第17章 未驗證的重定嚮和轉發 425
17.1 三角藉貸的故事——轉發和重定嚮 425
17.1.1 URL轉發 425
17.1.2 URL重定嚮 426
17.1.3 轉發與重定嚮的區彆 429
17.1.4 URL 重定嚮的實現方式 430
17.2 危害 438
17.3 如何檢測 439
17.4 如何預防 440
17.4.1 OWASP ESAPI與預防 441
17.5 重定嚮和轉發檢查列錶 443
17.6 小結 443
第5篇 安全設計、編碼十大原則
第18章 安全設計十大原則 448
設計原則1——簡單易懂 448
設計原則2——最小特權 448
設計原則3——故障安全化 450
設計原則4——保護最薄弱環節 451
設計原則5——提供深度防禦 452
設計原則6——分隔 453
設計原則7——總體調節 454
設計原則8——默認不信任 454
設計原則9——保護隱私 455
設計原則10——公開設計,不要假設隱藏秘密就是安全 455
第19章 安全編碼十大原則 457
編碼原則1——保持簡單 457
編碼原則2——驗證輸入 458
編碼原則3——注意編譯器告警 459
編碼原則4——框架和設計要符閤安全策略 459
編碼原則5——默認拒絕 460
編碼原則6——堅持最小權限原則 462
編碼原則7——淨化發送到其他係統的數據 463
編碼原則8——深度預防 464
編碼原則9——使用有效的質量保證技術 464
編碼原則10——采用一個安全編碼規範 465
· · · · · · (
收起)