基本介紹
內容簡介
172張圖解輕鬆入門
從基礎知識到最新動向,一本書掌握HTTP協定
Web前端開發者必備,從基礎知識到最新動向一網打盡
本書前半部分由HTTP的成長發展史娓娓道來,基於HTTP 1.1 標準講解通信過程,包括HTTP方法、協定格式、報文結構、首部欄位、狀態碼等的具體含義,還分別講解HTTP通信過程中代理、網關、隧道等的作用。接著介紹SPDY、WebSocket、WebDAV等HTTP的擴展功能。作者還從細節方面舉例,讓讀者更好地理解何為無狀態(stateless)、301和302重定向的區別在哪、快取機制,等等。本書後半部分的重心放在Web安全上,涵蓋HTTPS、SSL、證書認證、加密機制、Web攻擊手段等內容。
作者簡介
作者簡介
上野 宣
OWASP 日本分會會長,TRICORDER株式會社董事長。
主要從事安全諮詢、風險評估、信息安全教育等工作。著有《今晚我們一起學習郵件協定》(今夜わかるメールプロトコル)、《今晚我們一起學習TCP/IP》(今夜わかるTCP/IP)、《今晚我們一起學習HTTP》(今夜わかるHTTP)。擔任The Tangled Web:A Guide to Securing Modern Web Application日文版的審校工作。
譯者簡介
於均良
上海交通大學碩士,高級軟體工程師,馬拉松跑者,四點網創始人。
圖書目錄
第1章 了解Web及網路基礎 001
1.1 使用HTTP協定訪問Web 002
1.2 HTTP的誕生 003
1.2.1 為知識共享而規劃Web 003
1.2.2 Web成長時代 004
1.2.3 駐足不前的HTTP 005
1.3 網路基礎TCP/IP 006
1.3.1 TCP/IP協定族 006
1.3.2 TCP/IP的分層管理 007
1.3.3 TCP/IP通信傳輸流 009
1.4 與HTTP關係密切的協定:IP、TCP和DNS 010
1.4.1 負責傳輸的IP協定 011
1.4.2 確保可靠性的TCP協定 012
1.5 負責域名解析的DNS服務 013
1.6 各種協定與HTTP協定的關係 014
1.7 URI和URL 016
1.7.1 統一資源標識符 016
1.7.2 URI格式 017
第2章 簡單的HTTP協定 021
2.1 HTTP協定用於客戶端和伺服器端之間的通信 022
2.2 通過請求和回響的交換達成通信 022
2.3 HTTP是不保存狀態的協定 025
2.4 請求URI定位資源 026
2.5 告知伺服器意圖的HTTP方法 027
2.6 使用方法下達命令 033
2.7 持久連線節省通信量 034
2.7.1 持久連線 036
2.7.2 管線化 037
2.8 使用Cookie的狀態管理 037
第3章 HTTP報文內的HTTP信息 041
3.1 HTTP報文 042
3.2 請求報文及回響報文的結構 042
3.3 編碼提升傳輸速率 044
3.3.1 報文主體和實體主體的差異 044
3.3.2 壓縮傳輸的內容編碼 044
3.3.3 分割傳送的分塊傳輸編碼 045
3.4 傳送多種數據的多部分對象集合 046
3.5 獲取部分內容的範圍請求 048
3.6 內容協商返回最合適的內容 050
第4章 返回結果的HTTP狀態碼 053
4.1 狀態碼告知從伺服器端返回的請求結果 054
4.2 2XX成功 055
4.2.1 200OK 055
4.2.2 204NoContent 056
4.2.3 206PartialContent 056
4.3 3XX重定向 056
4.3.1 301MovedPermanently 057
4.3.2 302Found 057
4.3.3 303SeeOther 058
4.3.4 304NotModified 059
4.3.5 307TemporaryRedirect 059
4.4 4XX客戶端錯誤 060
4.4.1 400BadRequest 060
4.4.2 401Unauthorized 060
4.4.3 403Forbidden 061
4.4.4 404NotFound 061
4.5 5XX伺服器錯誤 062
4.5.1 500InternalServerError 062
4.5.2 503ServiceUnavailable 062
第5章 與HTTP協作的Web伺服器 065
5.1 用單台虛擬主機實現多個域名 066
5.2 通信數據轉發程式:代理、網關、隧道 067
5.2.1 代理 068
5.2.2 網關 070
5.2.3 隧道 070
5.3 保存資源的快取 071
5.3.1 快取的有效期限 072
5.3.2 客戶端的快取 072
第6章 HTTP首部 075
6.1 HTTP報文首部 076
6.2 HTTP首部欄位 078
6.2.1 HTTP首部欄位傳遞重要信息 078
6.2.2 HTTP首部欄位結構 078
6.2.3 4種HTTP首部欄位類型 079
6.2.4 HTTP/1.1首部欄位一覽 080
6.2.5 非HTTP/1.1首部欄位 082
6.2.6 End—to—end首部和Hop—by—hop首部 083
6.3 HTTP/1.1通用首部欄位 083
6.3.1 Cache—Control 084
6.3.2 Connection 091
6.3.3 Date 093
6.3.4 Pragma 094
6.3.5 Trailer 095
6.3.6 Transfer—Encoding 096
6.3.7 Upgrade 097
6.3.8 Via 098
6.3.9 Warning 099
6.4 請求首部欄位 100
6.4.1 Accept 101
6.4.2 Accept—Charset 102
6.4.3 Accept—Encoding 103
6.4.4 Accept—Language 104
6.4.5 Authorization 105
6.4.6 Expect 106
6.4.7 From 107
6.4.8 Host 107
6.4.9 If—Match 108
6.4.10 If—Modified—Since 110
6.4.11 If—None—Match 111
6.4.12 If—Range 112
6.4.13 If—Unmodified—Since 113
6.4.14 Max—Forwards 114
6.4.15 Proxy—Authorization 115
6.4.16 Range 116
6.4.17 Referer 116
6.4.18 TE 117
6.4.19 User—Agent 118
6.5 回響首部欄位119
6.5.1 Accept—Ranges 119
6.5.2 Age 120
6.5.3 ETag 120
6.5.4 Location 122
6.5.5 Proxy—Authenticate 123
6.5.6 Retry—After 123
6.5.7 Server 124
6.5.8 Vary 125
6.5.9 WWW—Authenticate 125
6.6 實體首部欄位126
6.6.1 Allow 126
6.6.2 Content—Encoding 127
6.6.3 Content—Language 128
6.6.4 Content—Length 128
6.6.5 Content—Location 129
6.6.6 Content—MD5 129
6.6.7 Content—Range 130
6.6.8 Content—Type 131
6.6.9 Expires 131
6.6.10 Last—Modified 132
6.7 為Cookie服務的首部欄位 132
6.7.1 Set—Cookie 134
6.7.2 Cookie 136
6.8 其他首部欄位137
6.8.1 X—Frame—Options 137
6.8.2 X—XSS—Protection 138
6.8.3 DNT 138
6.8.4 P3P 139
第7章 確保Web安全的HTTPS 141
7.1 HTTP的缺點 142
7.1.1 通信使用明文可能會被竊聽 142
7.1.2 不驗證通信方的身份就可能遭遇偽裝 146
7.1.3 無法證明報文完整性,可能已遭篡改 148
7.2 HTTP+加密+認證+完整性保護=HTTPS 150
7.2.1 HTTP加上加密處理和認證以及完整性保護後即是HTTPS 150
7.2.2 HTTPS是身披SSL外殼的HTTP 151
7.2.3 相互交換密鑰的公開密鑰加密技術 152
7.2.4 證明公開密鑰正確性的證書 155
7.2.5 HTTPS的安全通信機制 161
第8章 確認訪問用戶身份的認證 167
8.1 何為認證 168
8.2 BASIC認證 169
8.3 DIGEST認證171
8.4 SSL客戶端認證173
8.4.1 SSL客戶端認證的認證步驟 174
8.4.2 SSL客戶端認證採用雙因素認證 175
8.4.3 SSL客戶端認證必要的費用 175
8.5 基於表單認證 175
8.5.1 認證多半為基於表單認證 176
8.5.2 Session管理及Cookie套用 177
第9章 基於HTTP的功能追加協定 179
9.1 基於HTTP的協定180
9.2 消除HTTP瓶頸的SPDY 180
9.2.1 HTTP的瓶頸 180
9.2.2 SPDY的設計與功能 184
9.2.3 SPDY消除Web瓶頸了嗎 185
9.3 使用瀏覽器進行全雙工通信的WebSocket 186
9.3.1 WebSocket的設計與功能 186
9.3.2 WebSocket協定 186
9.4 期盼已久的HTTP/2.0 189
9.5 Web伺服器管理檔案的WebDAV 190
9.5.1 擴展HTTP/1.1的WebDAV 191
9.5.2 WebDAV內新增的方法及狀態碼 192
第10章 構建Web內容的技術 195
10.1 HTML 196
10.1.1 Web頁面幾乎全由HTML構建 196
10.1.2 HTML的版本 197
10.1.3 設計套用CSS 198
10.2 動態HTML 198
10.2.1 讓Web頁面動起來的動態HTML 198
10.2.2 更易控制HTML的DOM 198
10.3 Web套用 200
10.3.1 通過Web提供功能的Web套用 200
10.3.2 與Web伺服器及程式協作的CGI 200
10.3.3 因Java而普及的Servlet 201
10.4 數據發布的格式及語言 203
10.4.1 可擴展標記語言 203
10.4.2 發布更新信息的RSS/Atom 204
10.4.3 JavaScript衍生的輕量級易用JSON 206
第11章 Web的攻擊技術 207
11.1 針對Web的攻擊技術 208
11.1.1 HTTP不具備必要的安全功能 208
11.1.2 在客戶端即可篡改請求 209
11.1.3 針對Web套用的攻擊模式 210
11.2 因輸出值轉義不完全引發的安全漏洞 212
11.2.1 跨站腳本攻擊 213
11.2.2 SQL注入攻擊 218
11.2.3 OS命令注入攻擊 223
11.2.4 HTTP首部注入攻擊 225
11.2.5 郵件首部注入攻擊 228
11.2.6 目錄遍歷攻擊 229
11.2.7 遠程檔案包含漏洞 230
11.3 因設定或設計上的缺陷引發的安全漏洞 232
11.3.1 強制瀏覽 232
11.3.2 不正確的錯誤訊息處理 234
11.3.3 開放重定向 237
11.4 因會話管理疏忽引發的安全漏洞 237
11.4.1 會話劫持 238
11.4.2 會話固定攻擊 239
11.4.3 跨站點請求偽造 241
11.5 其他安全漏洞 242
11.5.1 密碼破解 242
11.5.2 點擊劫持 247
11.5.3 DoS攻擊 249
11.5.4 後門程式 250