本書介紹Web應用安全相關(guān)知識,包括Web應用技術(shù)基礎(chǔ)和Web應用安全技術(shù)兩部分,共13章。第1章為Web應用概述,第2章為Web前端原理與編程,第3章為Web服務器原理與編程,第4章為HTTP原理,第5章為MVC模式,第6章為Web應用安全簡介,第7章為Web應用前端安全,第8章為Web應用服務器端安全,第9章為HTTP相關(guān)漏洞原理,第10章為業(yè)務邏輯安全,第11章為Web應用安全防護,第12章為Web應用木馬防御,第13章為Web應用漏洞挖掘。課程組根據(jù)多年的教學實踐,并結(jié)合科研成果總結(jié)成書。本書突出強調(diào)理論性和實踐性的統(tǒng)一,在描述技術(shù)原理的同時,設(shè)計相關(guān)的示例程序,以便讀者復現(xiàn)實踐;突出強調(diào)知識結(jié)構(gòu)的整體性,將Web應用技術(shù)基礎(chǔ)和Web應用安全技術(shù)有機融合,有助于讀者構(gòu)建Web應用安全的知識體系。本書適合作為高等學校網(wǎng)絡空間安全、信息安全、網(wǎng)絡工程、計算機科學與技術(shù)、軟件工程等專業(yè)學生的Web應用安全課程教材,部分內(nèi)容也可供有一定基礎(chǔ)的本科生、研究生或研究人員作為參考資料。
顏學雄,信息工程大學網(wǎng)絡空間安全學院副教授。信息工程大學一流網(wǎng)絡安全學院示范專業(yè)建設(shè)-課程建設(shè)-Web應用安全項目負責人。曾獲國家級教學成果二等獎。曾出版《網(wǎng)絡安全》《網(wǎng)絡攻防技術(shù)(第2版)》《網(wǎng)絡安全實驗教程》《Web服務安全》。
第1章 Web應用概述 1
1.1 Web技術(shù)簡史 2
1.1.1 互聯(lián)網(wǎng)的誕生 2
1.1.2 Web技術(shù)的誕生 3
1.2 Web技術(shù)基本原理 3
1.3 Web前端 4
1.3.1 瀏覽器 5
1.3.2 HTML 5
1.3.3 CSS 6
1.3.4 JavaScript語言 7
1.4 Web服務器端 7
1.4.1 Web服務器 7
1.4.2 Web應用程序 8
1.4.3 數(shù)據(jù)庫系統(tǒng) 10
1.5 HTTP 11
1.6 典型Web應用簡介 11
思考題 12
第2章 Web前端原理與編程 13
2.1 HTML核心元素 14
2.1.1 HTML文檔結(jié)構(gòu) 14
2.1.2 head部分主要元素 15
2.1.3 超鏈接 15
2.1.4 文本和文字列表元素 16
2.1.5 多媒體元素 19
2.1.6 表單元素 21
2.1.7 內(nèi)聯(lián)框架 24
2.2 URL 25
2.3 CSS基本原理與應用 26
2.3.1 CSS使用模式 26
2.3.2 CSS屬性 27
2.3.3 選擇器 31
2.4 JavaScript語言簡介 32
2.4.1 在HTML文檔中使用JavaScript語言 32
2.4.2 JavaScript語法基礎(chǔ) 34
2.4.3 BOM操作 36
2.4.4 DOM操作 39
2.4.5 事件處理 42
2.4.6 AJAX技術(shù) 46
2.5 瀏覽器基本原理 49
2.5.1 瀏覽器基本架構(gòu) 49
2.5.2 瀏覽器主要工作過程 50
2.5.3 開發(fā)者工具 51
思考題 54
第3章 Web服務器原理與編程 55
3.1 Web服務器基本原理 56
3.2 Web服務器環(huán)境搭建 57
3.2.1 Apache環(huán)境安裝和配置 57
3.2.2 PHP環(huán)境安裝和配置 59
3.2.3 MySQL環(huán)境安裝和配置 59
3.2.4 集成環(huán)境搭建和配置 61
3.3 PHP語言基礎(chǔ) 63
3.3.1 基本語法 63
3.3.2 PHP語言的輸出和輸入 64
3.3.3 在HTML中嵌入PHP代碼 67
3.3.4 數(shù)據(jù)類型簡介 67
3.3.5 常量和變量 68
3.3.6 基本操作符 70
3.3.7 控制語句 71
3.4 PHP語言文件操作 73
3.4.1 文件打開和關(guān)閉 73
3.4.2 文件讀取 74
3.4.3 文件寫入 75
3.4.4 目錄操作 75
3.4.5 其他文件或目錄操作 76
3.5 PHP語言數(shù)組 76
3.5.1 數(shù)組結(jié)構(gòu) 76
3.5.2 數(shù)組創(chuàng)建 76
3.5.3 數(shù)組元素訪問 77
3.5.4 多維數(shù)組 78
3.6 PHP語言字符串 79
3.6.1 字符串的表示 79
3.6.2 字符串分隔與連接 80
3.6.3 字符串比較 82
3.6.4 字符串匹配與替換 83
3.7 PHP語言函數(shù) 84
3.7.1 自定義函數(shù) 84
3.7.2 內(nèi)置函數(shù) 85
3.7.3 匿名函數(shù)和動態(tài)函數(shù) 85
3.8 PHP語言數(shù)據(jù)庫編程 86
3.8.1 數(shù)據(jù)庫簡介 86
3.8.2 SQL語句簡介 87
3.8.3 數(shù)據(jù)庫編程接口 93
3.8.4 數(shù)據(jù)庫編程示例 95
3.9 PHP語言面向?qū)ο筇匦?96
3.9.1 對象和類 97
3.9.2 繼承和重載 100
3.9.3 訪問控制 102
思考題 103
第4章 HTTP原理 104
4.1 HTTP基本原理 105
4.1.1 基本通信過程 105
4.1.2 正向代理 105
4.1.3 反向代理 105
4.2 HTTP消息 106
4.2.1 HTTP請求消息 106
4.2.2 HTTP響應消息 107
4.3 HTTP頭部 110
4.3.1 通用頭部 110
4.3.2 請求頭部 111
4.3.3 響應頭部 111
4.3.4 實體頭部 112
4.3.5 非HTTP/1.1頭部 112
思考題 113
第5章 MVC模式 114
5.1 基本原理 115
5.2 開發(fā)過程示例 115
5.3 示例代碼清單 118
思考題 126
第6章 Web應用安全簡介 127
6.1 Web1.0時代的安全問題 128
6.2 OWASP TOP 10 128
6.3 Web前端安全問題 130
6.3.1 瀏覽器安全問題 130
6.3.2 XSS漏洞 131
6.3.3 點擊劫持攻擊 131
6.3.4 HTML5安全問題 131
6.4 Web服務器端安全問題 131
6.4.1 SQL注入漏洞 131
6.4.2 命令注入漏洞 131
6.4.3 代碼注入漏洞 132
6.4.4 文件操作類漏洞 132
6.4.5 XXE漏洞 132
6.4.6 反序列化漏洞 132
6.4.7 SSRF漏洞 133
6.5 HTTP安全問題 133
6.5.1 會話攻擊 133
6.5.2 請求頭注入攻擊 133
6.5.3 CSRF攻擊 133
6.5.4 網(wǎng)站架構(gòu)中的安全問題 133
6.6 業(yè)務邏輯安全問題 134
6.7 Web應用安全防護 134
6.8 Web應用木馬防御 134
6.9 Web應用漏洞挖掘 135
思考題 135
第7章 Web應用前端安全 136
7.1 同源策略 137
7.1.1 源的定義 137
7.1.2 同源策略規(guī)則 137
7.1.3 同源策略示例 138
7.2 XSS漏洞原理與防御 139
7.2.1 XSS漏洞基本原理 140
7.2.2 XSS漏洞類型 142
7.2.3 XSS漏洞利用方式 146
7.2.4 XSS漏洞防御 153
7.3 點擊劫持攻擊與防御 156
7.3.1 點擊劫持攻擊原理 156
7.3.2 點擊劫持攻擊防御 158
7.4 HTML5安全 160
7.4.1 iframe的sandbox屬性 160
7.4.2 跨域資源共享(CORS) 161
7.4.3 跨文檔通信 166
思考題 169
第8章 Web應用服務器端安全 170
8.1 SQL注入漏洞原理與防御 171
8.1.1 SQL注入漏洞基本原理 171
8.1.2 SQL注入漏洞分類 173
8.1.3 SQL注入漏洞利用方式 174
8.1.4 SQL盲注入 179
8.1.5 SQL注入漏洞防御 181
8.1.6 SQLMAP工具 183
8.2 命令注入漏洞原理與防御 187
8.2.1 命令注入漏洞基本原理 187
8.2.2 命令注入漏洞分類 190
8.2.3 命令注入漏洞利用方法 190
8.2.4 命令注入漏洞防御方法 192
8.3 代碼注入漏洞原理與防御 193
8.3.1 代碼注入漏洞基本原理 194
8.3.2 代碼注入漏洞利用方法 195
8.3.3 代碼注入漏洞防御 195
8.4 文件操作類漏洞原理與防御 195
8.4.1 文件包含漏洞原理與防御 195
8.4.2 文件上傳漏洞原理與防御 199
8.4.3 文件下載漏洞原理與防御 205
8.5 XXE漏洞原理與防御 207
8.5.1 XML基礎(chǔ) 208
8.5.2 XXE漏洞基本原理 211
8.5.3 XXE漏洞利用 214
8.5.4 XXE漏洞防御 215
8.6 反序列化漏洞原理與防御 215
8.6.1 PHP語言數(shù)據(jù)類型的序列化與反序列化 216
8.6.2 PHP語言魔術(shù)方法 218
8.6.3 反序列化漏洞原理 220
8.6.4 反序列化漏洞利用—構(gòu)造POP鏈 223
8.6.5 反序列化漏洞防御 225
8.7 SSRF漏洞原理與防御 226
8.7.1 SSRF漏洞基本原理 226
8.7.2 PHP語言中的封裝協(xié)議 227
8.7.3 SSRF漏洞利用方法 228
8.7.4 SSRF漏洞防御 229
思考題 229
第9章 HTTP相關(guān)漏洞原理 231
9.1 HTTP會話管理 232
9.1.1 Cookie機制 232
9.1.2 基于Cookie的會話原理 234
9.1.3 會話示例—Ebank系統(tǒng) 234
9.2 會話攻擊原理與防御 240
9.2.1 會話攻擊原理 240
9.2.2 會話攻擊防御 245
9.3 請求頭注入攻擊原理與防御 245
9.3.1 消息頭注入攻擊原理 246
9.3.2 消息頭注入攻擊防御 247
9.4 CSRF攻擊原理與防御 247
9.4.1 CSRF攻擊原理 247
9.4.2 CSRF攻擊防御 248
9.5 網(wǎng)站架構(gòu)漏洞原理與防御 249
9.5.1 HTTP參數(shù)污染 249
9.5.2 HTTP響應切分 253
思考題 255
第10章 業(yè)務邏輯安全 256
10.1 迷你商城積分兌換系統(tǒng) 257
10.1.1 系統(tǒng)概述 257
10.1.2 用戶登錄模塊 258
10.1.3 顧客積分兌換模塊 259
10.1.4 商家訂單處理模塊 262
10.1.5 顧客訂單信息查看模塊 263
10.1.6 退出登錄模塊 265
10.2 用戶賬號暴力破解 265
10.2.1 一般原理 265
10.2.2 攻擊過程示例 265
10.2.3 暴力破解的防御方法 268
10.3 權(quán)限管理漏洞 268
10.3.1 非授權(quán)訪問漏洞 268
10.3.2 水平越權(quán)漏洞 269
10.3.3 垂直越權(quán)漏洞 271
10.4 其他典型業(yè)務邏輯漏洞 272
思考題 274
第11章 Web應用安全防護 275
11.1 正則表達式 276
11.1.1 正則表達式簡介 276
11.1.2 正則表達式基本形式 276
11.1.3 字符類 277
11.1.4 重復量詞 277
11.1.5 邊界限定 278
11.1.6 模式修飾符 279
11.1.7 模式選擇 279
11.1.8 子模式 279
11.1.9 反向引用 280
11.1.10 基于正則表達式的字符串操作 280
11.2 Web應用防火墻 282
11.2.1 WAF防護原理 282
11.2.2 WAF分類 283
11.2.3 ModSecurity 283
11.3 微軟SDL安全開發(fā)流程 288
思考題 291
第12章 Web應用木馬防御 292
12.1 Webshell原理與檢測 293
12.1.1 Webshell分類及原理 293
12.1.2 Webshell管理工具 294
12.1.3 Webshell檢測方法 297
12.2 網(wǎng)頁木馬原理與防御 298
12.2.1 網(wǎng)頁木馬基本概念及原理 298
12.2.2 網(wǎng)頁木馬防御技術(shù) 303
思考題 305
第13章 Web應用漏洞挖掘 306
13.1 PHP代碼安全審計 307
13.1.1 代碼審計的一般流程 307
13.1.2 漏洞代碼示例 307
13.1.3 基于模式匹配方法 310
13.1.4 基于污點分析方法 311
13.1.5 代碼審計工具—RIPS 315
13.2 Web應用程序模糊測試 316
13.2.1 Web應用的模糊測試流程 316
13.2.2 面向漏洞挖掘的Web應用爬蟲 318
13.2.3 測試用例生成方法 319
思考題 322