【赠书】白帽子讲Web安全(第2版)

【赠书】白帽子讲Web安全(第2版)_第1张图片

1 白帽子安全观 1
1.1 Web安全简史 1
1.1.1 黑客技术发展历程 1
1.1.2 Web安全的兴起 4
1.2 黑帽子,白帽子 5
1.3 返璞归真,揭秘安全的本质 6
1.4 破除迷信,没有银弹 9
1.5 安全三要素 10
1.6 如何实施安全评估 11
1.6.1 资产等级划分 11
1.6.2 威胁建模 13
1.6.3 风险分析 14
1.6.4 设计安全方案 15
1.6.5 态势感知 16
1.7 安全方案的设计原则 18
1.7.1 “默认安全”原则 18
1.7.2 “纵深防御”原则 19
1.7.3 “数据与代码分离”原则 21
1.7.4 “随机性”原则 23
1.8 小结 24

2 HTTP协议与Web应用 26
2.1 HTTP协议 26
2.1.1 HTTP协议简介 26
2.1.2 HTTP请求 26
2.1.3 HTTP响应 31
2.1.4 HTTP/2和HTTP/3 32
2.1.5 Websocket 34
2.2 Web服务器 35
2.3 Web页面 36
2.3.1 文档对象模型(DOM) 36
2.3.2 JavaScript 36
2.4 小结 37
3 浏览器安全 38
3.1 同源策略 38
3.2 浏览器沙箱 39
3.3 XSS保护 42
3.4 隐私策略 43
3.5 浏览器扩展 48
3.6 高速发展的浏览器安全 49
3.7 小结 51
4 Cookie和会话安全 53
4.1 Cookie和会话简介 53
4.2 第一方Cookie和第三方Cookie 54
4.3 Cookie属性 55
4.3.1 Domain属性 55
4.3.2 Path属性 56
4.3.3 Expires属性 57
4.3.4 HttpOnly属性 57
4.3.5 Secure属性 58
4.3.6 SameSite属性 59
4.3.7 SameParty属性 61
4.4 安全使用Cookie 62
4.4.1 正确设置属性值 62
4.4.2 Cookie前缀 62
4.4.3 保密性和完整性 63
4.5 会话安全 64
4.5.1 会话管理 64
4.5.2 固定会话攻击 66
4.6 小结 67
5 深入同源策略 68
5.1 同源策略详解 68
5.2 跨域DOM互访问 72
5.2.1 子域名应用互访问 72
5.2.2 通过window.name跨域 74
5.2.3 window.postMessage方案 74
5.3 跨域访问服务端 76
5.3.1 JSONP方案 76
5.3.2 跨域资源共享 77
5.3.3 私有网络访问 80
5.3.4 Websocket跨域访问 82
5.3.5 其他跨域访问 82
5.4 小结 82
6 跨站脚本攻击 84
6.1 XSS攻击简介 84
6.2 XSS攻击类型 86
6.2.1 反射型XSS攻击 86
6.2.2 存储型XSS攻击 87
6.2.3 基于DOM的XSS攻击 88
6.2.4 Self-XSS攻击 89
6.3 XSS攻击进阶 90
6.3.1 初探XSS Payload 90
6.3.2 强大的XSS Payload 91
6.4 XSS蠕虫 94
6.5 XSS攻击技巧 96
6.5.1 基本的变形 96
6.5.2 事件处理程序 96
6.5.3 JavaScript伪协议 97
6.5.4 编码绕过 98
6.5.5 绕过长度 99
6.5.6 使用<base>标签 101
6.5.7 window.name的妙用 102
6.6 JavaScript框架 102
6.6.1 jQuery 103
6.6.2 Vue.js 103
6.6.3 AngularJS 103
6.7 XSS攻击的防御 104
6.7.1 HttpOnly 105
6.7.2 输入过滤 105
6.7.3 输出转义 107
6.8 关于XSS Filter 122
6.9 小结 124
7 跨站请求伪造(CSRF) 125
7.1 CSRF简介 125
7.2 CSRF详解 126
7.2.1 CSRF的本质 126
7.2.2 GET和POST请求 127
7.2.3 CSRF蠕虫 128
7.3 防御CSRF攻击 130
7.3.1 验证码 130
7.3.2 Referer校验 130
7.3.3 Cookie的SameSite属性 131
7.4 Anti-CSRF Token 131
7.4.1 原理 131
7.4.2 使用原则 133
7.5 小结 135
8 点击劫持 136
8.1 点击劫持简介 136
8.2 图片覆盖攻击 139
8.3 拖拽劫持与数据窃取 140
8.4 其他劫持方式 142
8.5 防御点击劫持 143
8.5.1 Frame Busting 143
8.5.2 Cookie的SameSite属性 144
8.5.3 X-Frame-Options 144
8.5.4 CSP:frame-ancestors 145
8.6 小结 145
9 移动Web安全 146
9.1 WebView简介 146
9.2 WebView对外暴露 147
9.3 Universal XSS 148
9.4 WebView跨域访问 148
9.5 与本地代码交互 150
9.6 其他安全问题 151
9.7 小结 151
10 注入攻击 152
10.1 SQL注入 152
10.1.1 Union注入 153
10.1.2 堆叠注入 153
10.1.3 报错注入 154
10.2 盲注 154
10.2.1 布尔型盲注 154
10.2.2 延时盲注 155
10.2.3 带外数据注入 157
10.3 二次注入 158
10.4 SQL注入技巧 158
10.4.1 常见攻击技巧 158
10.4.2 命令执行 161
10.4.3 攻击存储过程 163
10.4.4 编码问题 164
10.4.5 SQL Column Truncation 166
10.5 防御SQL注入 166
10.5.1 使用预编译语句 167
10.5.2 使用存储过程 168
10.5.3 参数校验 169
10.5.4 使用安全函数 169
10.6 其他注入攻击 171
10.6.1 NoSQL注入 171
10.6.2 XML注入 172
10.6.3 代码注入 175
10.6.4 CRLF注入 183
10.6.5 LDAP注入 184
10.7 小结 185
11 文件操作 186
11.1 上传和下载 186
11.1.1 上传和下载漏洞概述 186
11.1.2 路径解析漏洞 188
11.1.3 文件上传与下载的安全 189
11.2 对象存储的安全 190
11.3 路径穿越(Path Traversal) 192
11.4 文件包含(File Inclusion) 194
11.5 小结 196
12 服务端请求伪造(SSRF) 197
12.1 SSRF攻击简介 197
12.2 SSRF漏洞成因 199
12.3 SSRF攻击进阶 199
12.3.1 攻击内网应用 199
12.3.2 端口扫描 200
12.3.3 攻击非Web应用 201
12.3.4 绕过技巧 203
12.4 SSRF防御方案 204
12.5 小结 205
13 身份认证 206
13.1 概述 206
13.2 密码的安全性 207
13.3 身份认证的方式 210
13.3.1 HTTP认证 210
13.3.2 表单登录 213
13.3.3 客户端证书 214
13.3.4 一次性密码 214
13.3.5 多因素认证 215
13.3.6 FIDO 215
13.4 暴力破解和撞库 217
13.5 单点登录 217
13.5.1 OAuth 218
13.5.2 OIDC 221
13.5.3 SAML 221
13.5.4 CAS 223
13.6 小结 224
14 访问控制 225
14.1 概述 225
14.2 访问控制模型 227
14.2.1 自主访问控制 227
14.2.2 基于角色的访问控制 228
14.2.3 基于属性的访问控制 229
14.3 越权访问漏洞 230
14.3.1 垂直越权访问 230
14.3.2 水平越权访问 231
14.4 零信任模型 233
14.4.1 基本原则 234
14.4.2 实现方案 236
14.5 小结 237
15 密码算法与随机数 239
15.1 加密、编码和哈希 239
15.2 安全使用加密算法 240
15.2.1 流加密算法 240
15.2.2 分组加密算法 242
15.2.3 非对称加密算法 245
15.3 分组填充和Padding Oracle攻击 246
15.4 安全使用哈希函数 255
15.5 关于彩虹表 257
15.6 安全使用随机数 259
15.6.1 伪随机数生成器 260
15.6.2 弱伪随机数 261
15.6.3 关于随机数使用的建议 262
15.7 密钥管理 263
15.8 信息隐藏 265
15.9 HTTPS协议 267
15.9.1 SSL和TLS协议的发展 268
15.9.2 HTTP严格传输安全(HSTS) 274
15.9.3 公钥固定 276
15.9.4 证书透明度(Certificate Transparency) 277
15.10 小结 277
16 API安全 279
16.1 API安全概述 279
16.2 常见API架构 280
16.2.1 SOAP 280
16.2.2 REST 280
16.2.3 GraphQL 282
16.3 OpenAPI规范 284
16.4 常见的API漏洞 285
16.5 API安全实践 289
16.5.1 API发现 289
16.5.2 生命周期管理 290
16.5.3 数据安全 290
16.5.4 攻击防护 291
16.5.5 日志和审计 291
16.5.6 威胁检测 291
16.5.7 使用API网关 292
16.5.8 微服务安全 292
16.6 小结 293
17 业务逻辑安全 294
17.1 账号安全 294
17.1.1 注册账号 294
17.1.2 登录账号 296
17.1.3 退出账号 297
17.1.4 找回密码 298
17.2 图形验证码 299
17.2.1 验证逻辑 299
17.2.2 强度 300
17.3 并发场景 301
17.3.1 条件竞争 301
17.3.2 临时数据 302
17.3.3 支付逻辑缺陷 303
17.4 小结 304
18 开发语言的安全 305
18.1 PHP安全 305
18.1.1 变量覆盖 305
18.1.2 空字节问题 306
18.1.3 弱类型 307
18.1.4 反序列化 307
18.1.5 安全配置 308
18.2 Java安全 309
18.2.1 Security Manager 309
18.2.2 反射 310
18.2.3 反序列化 312
18.3 Python安全 316
18.3.1 反序列化 316
18.3.2 代码保护 317
18.4 JavaScript安全 317
18.4.1 第三方JavaScript资源 317
18.4.2 JavaScript框架 318
18.5 Node.js安全 319
18.6 小结 319
19 服务端安全配置 321
19.1 “最小权限”原则 321
19.2 Web服务器安全 323
19.2.1 nginx安全 323
19.2.2 Apache HTTP Server安全 326
19.3 数据库安全 327
19.4 Web容器安全 329
19.4.1 Tomcat远程代码执行 330
19.4.2 Weblogic远程代码执行 331
19.5 Web中间件安全 332
19.6 日志与错误信息 334
19.6.1 日志的记录和留存 335
19.6.2 敏感信息处理 335
19.6.3 错误处理 336
19.7 小结 337
20 代理和CDN安全 338
20.1 正向代理 338
20.2 反向代理 340
20.3 获取真实IP地址 342
20.4 缓存投毒 343
20.5 请求夹带攻击 345
20.6 RangeAMP攻击 348
20.7 域前置(Domain Fronting) 349
20.8 小结 352
21 应用层拒绝服务攻击 353
21.1 DDoS简介 353
21.2 应用层DDoS攻击 357
21.2.1 CC攻击 357
21.2.2 请求频率 359
21.2.3 道高一尺,魔高一丈 360
21.3 防御应用层DDoS攻击 362
21.3.1 IP威胁情报库 362
21.3.2 JavaScript校验 363
21.3.3 客户端指纹 364
21.3.4 人机校验 366
21.3.5 访问行为识别 367
21.4 资源耗尽型攻击 367
21.4.1 Slowloris攻击 367
21.4.2 HTTP POST DoS 369
21.4.3 ReDoS 370
21.4.4 HashDoS 373
21.5 小结 374
22 爬虫对抗 375
22.1 揭秘爬虫 375
22.1.1 爬虫的发展 376
22.1.2 行业挑战 377
22.2 反爬虫方案 378
22.2.1 客户端特征 378
22.2.2 行为分析 379
22.2.3 图形验证码 381
22.2.4 IP信誉 381
22.2.5 代码保护 382
22.2.6 数据保护 384
22.3 爬虫对抗 385
22.4 小结 386
23 安全检测和防御 387
23.1 Web应用防火墙(WAF) 387
23.1.1 参数解析 389
23.1.2 攻击检测 393
23.1.3 日志分析 395
23.2 RASP 396
23.3 Web后门检测 401
23.4 小结 405
24 机器学习在安全领域的应用 406
24.1 机器学习概述 406
24.1.1 机器学习模型 407
24.1.2 模型指标 410
24.2 攻击检测 411
24.2.1 Web攻击检测 411
24.2.2 识别钓鱼网站 414
24.3 异常行为检测 415
24.4 自动化攻击 417
24.4.1 识别验证码 417
24.4.2 破译密码 418
24.5 攻击机器学习模型 420
24.5.1 对抗性攻击 420
24.5.2 信息窃取 423
24.5.3 模型投毒 423
24.6 小结 424
25 DevSecOps 426
25.1 为什么需要DevSecOps 426
25.2 DevSecOps原则 429
25.2.1 安全责任共担 429
25.2.2 安全培训 430
25.2.3 安全左移 430
25.2.4 默认安全 431
25.2.5 自动化 431
25.3 DevSecOps工具链 431
25.3.1 需求分析与设计 432
25.3.2 软件成分分析 433
25.3.3 安全测试 435
25.3.4 容器安全 439
25.3.5 代码保护 439
25.3.6 威胁检测和响应 440
25.4 小结 441

你可能感兴趣的:(web安全,安全)