图解HTTP
出版信息
【日】上野宣 / 于均良 / 人民邮电出版社 / 2014-4-15 / 49.00元
内容简介
本书对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。本书的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过本书快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。
本书适合Web开发工程师,以及对HTTP协议感兴趣的各层次读者。
作者简介
作者简介
上野 宣
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.1HTTP报文 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 200 OK 055
4.2.2 204 No Content 056
4.2.3 206 Partial Content 056
4.3 3XX 重定向 056
4.3.1 301 Moved Permanently 057
4.3.2 302 Found 057
4.3.3 303 See Other 058
4.3.4 304 Not Modified 059
4.3.5 307 Temporary Redirect 059
4.4 4XX 客户端错误 060
4.4.1 400 Bad Request 060
4.4.2 401 Unauthorized 060
4.4.3 403 Forbidden 061
4.4.4 404 Not Found 061
4.5 5XX 服务器错误 062
4.5.1 500 Internal Server Error 062
4.5.2 503 Service Unavailable 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