第一部分 基础知识 2
第1章 Web安全基础 2
1.1 Web安全的核心问题 2
1.2 HTTP协议概述 5
1.2.1 HTTP请求头的内容 6
1.2.2 HTTP协议响应头的内容 9
1.2.3 URL的基本格式 11
1.3 HTTPS协议的安全性分析 12
1.3.1 HTTPS协议的基本概念 13
1.3.2 HTTPS认证流程 14
1.3.3 HTTPS协议的特点总结 16
1.4 Web应用中的编码与加密 16
1.4.1 针对字符的编码 16
1.4.2 传输过程的编码 18
1.4.3 Web系统中的加密措施 20
1.5 本章小结 22
第二部分 网络攻击的基本防护方法 24
第2章 XSS攻击 24
2.1 XSS攻击的原理 24
2.2 XSS攻击的分类 25
2.2.1 反射型XSS 26
2.2.2 存储型XSS 26
2.2.3 基于DOM的XSS 26
2.3 XSS攻击的条件 26
2.4 漏洞测试的思路 27
2.4.1 基本测试流程 28
2.4.2 XSS进阶测试方法 30
2.4.3 测试流程总结 40
2.5 XSS攻击的利用方式 40
2.5.1 窃取Cookie 40
2.5.2 网络钓鱼 42
2.5.3 窃取客户端信息 44
2.6 XSS漏洞的标准防护方法 45
2.6.1 过滤特殊字符 45
2.6.2 使用实体化编码 50
2.6.3 HttpOnly 52
2.7 本章小结 52
第3章 请求伪造漏洞与防护 53
3.1 CSRF攻击 54
3.1.1 CSRF漏洞利用场景 58
3.1.2 针对CSRF的防护方案 58
3.1.3 CSRF漏洞总结 61
3.2 SSRF攻击 61
3.2.1 SSRF漏洞利用场景 62
3.2.2 针对SSRF的防护方案 65
3.2.3 SSRF漏洞总结 66
3.3 本章小结 66
第4章 SQL注入 67
4.1 SQL注入攻击的原理 67
4.2 SQL注入攻击的分类 72
4.3 回显注入攻击的流程 72
4.3.1 SQL手工注入的思路 73
4.3.2 寻找注入点 73
4.3.3 通过回显位确定字段数 74
4.3.4 注入并获取数据 76
4.4 盲注攻击的流程 78
4.4.1 寻找注入点 79
4.4.2 注入获取基本信息 81
4.4.3 构造语句获取数据 84
4.5 常见防护手段及绕过方式 86
4.5.1 参数类型检测及绕过 86
4.5.2 参数长度检测及绕过 88
4.5.3 危险参数过滤及绕过 90
4.5.4 针对过滤的绕过方式汇总 95
4.5.5 参数化查询 99
4.5.6 常见防护手段总结 100
4.6 本章小结 101
第5章 文件上传攻击 102
5.1 上传攻击的原理 103
5.2 上传的标准业务流程 103
5.3 上传攻击的条件 106
5.4 上传检测绕过技术 107
5.4.1 客户端JavaScript检测及绕过 107
5.4.2 服务器端MIME检测及绕过 110
5.4.3 服务器端文件扩展名检测及绕过 113
5.4.4 服务器端文件内容检测及绕过 118
5.4.5 上传流程安全防护总结 122
5.5 文件解析攻击 123
5.5.1 .htaccess攻击 123
5.5.2 Web服务器解析漏洞攻击 125
5.6 本章小结 127
第6章 Web木马的原理 128
6.1 Web木马的特点 129
6.2 一句话木马 130
6.2.1 一句话木马的原型 130
6.2.2 一句话木马的变形技巧 131
6.2.3 安全建议 135
6.3 小马与大马 136
6.3.1 文件操作 137
6.3.2 列举目录 139
6.3.3 端口扫描 139
6.3.4 信息查看 140
6.3.5 数据库操作 142
6.3.6 命令执行 143
6.3.7 批量挂马 144
6.4 本章小结 145
第7章 文件包含攻击 146
7.1 漏洞原理 146
7.2 服务器端功能实现代码 147
7.3 漏洞利用方式 148
7.3.1 上传文件包含 148
7.3.2 日志文件包含 148
7.3.3 敏感文件包含 150
7.3.4 临时文件包含 151
7.3.5 PHP封装协议包含 151
7.3.6 利用方式总结 151
7.4 防护手段及对应的绕过方式 152
7.4.1 文件名验证 152
7.4.2 路径限制 154
7.4.3 中间件安全配置 156
7.5 本章小结 158
第8章 命令执行攻击与防御 159
8.1 远程命令执行漏洞 159
8.1.1 利用系统函数实现远程命令执行 159
8.1.2 利用漏洞获取webshell 163
8.2 系统命令执行漏洞 167
8.3 有效的防护方案 169
8.3.1 禁用部分系统函数 169
8.3.2 严格过滤关键字符 169
8.3.3 严格限制允许的参数类型 169
8.4 本章小结 170
第三部分 业务逻辑安全 172
第9章 业务逻辑安全风险存在的前提 172
9.1 用户管理的基本内容 173
9.2 用户管理涉及的功能 174
9.3 用户管理逻辑的漏洞 175
9.4 本章小结 176
第10章 用户管理功能的实现 177
10.1 客户端保持方式 177
10.1.1 Cookie 178
10.1.2 Session 179
10.1.3 特定应用环境实例 180
10.2 用户基本登录功能实现及安全情况分析 186
10.3 本章小结 189
第11章 用户授权管理及安全分析 190
11.1 用户注册阶段安全情况 191
11.1.1 用户重复注册 191
11.1.2 不校验用户注册数据 192
11.1.3 无法阻止的批量注册 193
11.2 用户登录阶段的安全情况 194
11.2.1 明文传输用户名/密码 194
11.2.2 用户凭证(用户名/密码)可被暴力破解 198
11.2.3 万能密码 199
11.2.4 登录过程中的安全问题及防护手段汇总 202
11.3 密码找回阶段的安全情况 203
11.3.1 验证步骤可跳过 204
11.3.2 平行越权 205
11.3.3 验证过于简单 205
11.3.4 弱token 205
11.3.5 凭证返回 205
11.3.6 Session覆盖 206
11.4 记住登录状态 207
11.5 用户手段管理及登录安全汇总 208
11.6 本章小结 208
第12章 用户身份识别技术及安全防护 210
12.1 验证码技术 211
12.1.1 验证码的发展思路 211
12.1.2 验证码识别技术的发展 214
12.2 验证码带来的问题 217
12.2.1 验证码不刷新 218
12.2.2 验证码生成可控 218
12.2.3 验证码前台对比 218
12.3 二次验证技术 219
12.3.1 短信随机码识别 219
12.3.2 邮箱确认链接识别 219
12.4 身份识别技术的防护 220
12.5 本章小结 220
第13章 用户后续功能及集中认证方式安全分析 222
13.1 用户取得授权后的应用安全隐患 222
13.1.1 密码修改功能 224
13.1.2 绕过原密码验证 225
13.2 用户集中认证方式 225
13.2.1 OAuth2.0的授权过程 227
13.2.2 可能存在的安全隐患 227
13.3 本章小结 228
第14章 用户权限处理问题 229
14.1 用户越权的案例 229
14.2 越权漏洞的出现根源分析 229
14.3 保持用户一致性的措施 231
14.4 有效的用户权限管理方式 231
14.5 本章小结 237
第15章 业务流程安全基础防护方式总结 238
15.1 用户注册阶段 240
15.2 用户登录阶段 242
15.3 密码找回阶段 244
15.4 基本业务功能应用阶段 245
15.5 本章小结 247
第四部分 攻防综合视角下的Web安全防护 250
第16章 标准业务场景 250
16.1 CMS及其特征 250
16.2 常见的远程管理方式 253
16.2.1 Web应用管理后台 254
16.2.2 数据库开放远程管理 255
16.2.3 在线编辑器 256
16.3 本章小结 257
第17章 用户视角下的所见范围探测 258
17.1 易被忽视的whois信息 258
17.2 利用搜索引擎发现敏感信息 261
17.2.1 常用操作符 262
17.2.2 综合利用搜索引擎 267
17.2.3 专项搜索用法汇总 269
17.3 真实IP地址发现手段 271
17.4 真实物理地址 274
17.5 目标端口开放情况 275
17.6 目标版本特征发现 277
17.7 利用Web漏洞扫描工具的利与弊 279
17.8 分站信息查找 281
17.9 本章小结 282
第18章 用户视角下的防护手段识别 283
18.1 开放端口及对应业务识别 283
18.2 是否有防护类软件 284
18.3 基本漏洞的防护测试 285
18.4 本章小结 287
第19章 常用的防护方案 288
19.1 整体防护思路 288
19.2 简单的防护方案 289
19.2.1 关闭或修改服务器开放端口 289
19.2.2 利用防护类工具 291
19.2.3 采用成熟的CMS系统 292
19.3 提升安全性的基础手段 292
19.3.1 隐藏Web服务器的banner 292
19.3.2 robots.txt 296
19.3.3 提升后台地址复杂度 298
19.4 DDoS攻击及防护方法 298
19.4.1 DDoS的主要攻击手段 299
19.4.2 如何解决DDoS攻击问题 302
19.5 本章小结 304
第五部分 常见Web防护技术及防护开展方法 308
第20章 Web防护技术的演进 308
20.1 硬件WAF 309
20.1.1 常用的防护规则 311
20.1.2 Apache ModSecuri 312
20.2 防篡改软件 314
20.3 云防护系统 315
20.4 本章小结 316
第21章 Web安全防护体系建议 317
21.1 Web安全的核心问题 318
21.2 现实环境下的客观因素 319
21.3 如何建立基本的安全框架 319
21.3.1 处理用户交互权限 320
21.3.2 处理用户输入参数 321
21.3.3 确认用户应用边界 321
21.3.4 处理流程规范化 322
21.4 微软SDL安全开发流程 322
21.5 本章小结 324
第22章 渗透测试的方法及流程 325
22.1 渗透测试的关注点 326
22.2 渗透测试的阶段 326
22.3 渗透测试的基本要求 328
22.4 本章小结 329
第23章 快速代码审计实践 330
23.1 快速代码审计的基本流程 330
23.2 基本功能安全审计 331
23.3 系统防护功能的安全性分析 333
23.4 业务逻辑安全分析 343
23.5 本章小结 360
后记 361
参考文献 362