译者序
前言
关于作者
关于技术审校
致谢
第1章 让我们了解黑客如何入侵一个网站 1
1.1 软件漏洞和暗网 1
1.2 黑客如何攻击网站 2
第2章 互联网的工作原理 5
2.1 互联网协议套件 5
2.1.1 IP地址 6
2.1.2 域名系统 6
2.2 应用层协议 7
2.3 状态连接 11
2.4 加密 12
2.5 小结 12
第3章 浏览器的工作原理 13
3.1 页面呈现 13
3.1.1 渲染管道:概述 14
3.1.2 文档对象模型 14
3.1.3 样式信息 15
3.2 JavaScript 16
3.3 渲染前后:浏览器执行的所有其他操作 18
3.4 小结 18
第4章 Web服务器的工作方式 20
4.1 静态资源 20
4.1.1 URL解析 21
4.1.2 内容交付网络 22
4.1.3 内容管理系统 22
4.2 动态资源 24
4.2.1 模板 24
4.2.2 数据库 25
4.2.3 分布式缓存 27
4.2.4 Web编程语言 28
4.3 小结 32
第5章 程序员的工作方式 33
5.1 阶段1:设计与分析 34
5.2 阶段2:编写代码 34
5.2.1 分布式版本控制与集中式版本控制 35
5.2.2 分支和合并代码 35
5.3 阶段3:发布前测试 36
5.3.1 覆盖范围和持续集成 37
5.3.2 测试环境 37
5.4 阶段4:发布过程 38
5.4.1 发布期间标准化部署的选项 39
5.4.2 编译过程 41
5.4.3 数据库迁移脚本 41
5.5 阶段5:发布后的测试和观察 42
5.5.1 渗透测试 42
5.5.2 监控、日志记录和错误报告 42
5.6 依赖管理 43
5.7 小结 44
第6章 注入攻击 45
6.1 SQL注入 46
6.1.1 什么是SQL 46
6.1.2 SQL注入攻击剖析 47
6.1.3 缓解措施1:使用参数化语句 49
6.1.4 缓解措施2:使用对象关系映射 50
6.1.5 额外缓解:使用纵深防御 51
6.2 命令注入 52
6.2.1 命令注入攻击剖析 53
6.2.2 缓解措施:转义控制字符 54
6.3 远程代码执行 55
6.3.1 远程代码执行剖析 56
6.3.2 缓解措施:在反序列化期间禁用代码执行 56
6.4 文件上传漏洞 57
6.4.1 文件上传攻击剖析 57
6.4.2 缓解措施 59
6.5 小结 60
第7章 跨站点脚本攻击 62
7.1 存储型跨站点脚本攻击 62
7.1.1 缓解措施1:转义HTML字符 64
7.1.2 缓解措施2:实施内容安全策略 66
7.2 反射型跨站点脚本攻击 67
7.3 基于DOM的跨站点脚本攻击 69
7.4 小结 71
第8章 跨站点请求伪造攻击 72
8.1 CSRF攻击剖析 72
8.2 缓解措施1:遵循REST原则 73
8.3 缓解措施2:使用anti-CSRF cookie 74
8.4 缓解措施3:使用SameSite cookie属性 75
8.5 额外的缓解措施:敏感动作需要重新验证 76
8.6 小结 77
第9章 破坏身份认证 78
9.1 实施身份认证 78
9.1.1 HTTP本地身份认证 79
9.1.2 非本地认证 80
9.1.3 暴力破解攻击 80
9.2 缓解措施1:使用第三方身份认证 81
9.3 缓解措施2:与单点登录集成 81
9.4 缓解措施3:保护自己的身份认证系统 82
9.4.1 需要用户名、电子邮件地址或两个都要 82
9.4.2 要求复杂密码 85
9.4.3 安全地存储密码 85
9.4.4 多因素身份认证 87
9.4.5 实现并保护注销功能 88
9.4.6 防止用户枚举 88
9.5 小结 89
第10章 会话劫持 91
10.1 会话的工作方式 91
10.1.1 服务器端会话 92
10.1.2 客户端会话 93
10.2 攻击者如何劫持会话 95
10.2.1 cookie窃取 95
10.2.2 会话确定 97
10.2.3 利用弱会话ID 98
10.3 小结 99
第11章 权限 100
11.1 提权 100
11.2 访问控制 101
11.2.1 设计授权模型 101
11.2.2 实施访问控制 103
11.2.3 测试访问控制 104
11.2.4 添加审计记录 105
11.2.5 避免常见的疏忽 105
11.3 目录遍历 105
11.3.1 文件路径和相对文件路径 106
11.3.2 目录遍历攻击剖析 106
11.3.3 缓解措施1:信任你的Web服务器 107
11.3.4 缓解措施2:使用托管服务 108
11.3.5 缓解措施3:使用间接文件引用 108
11.3.6 缓解措施4:净化文件引用 108
11.4 小结 109
第12章 信息泄露 111
12.1 缓解措施1:禁用Telltale Server标头 111
12.2 缓解措施2:使用干净的URL 111
12.3 缓解措施3:使用通用cookie参数 112
12.4 缓解措施4:禁用客户端错误报告 112
12.5 缓解措施5:缩小或模糊处理JavaScript文件 113
12.6 缓解措施6:清理客户端文件 113
12.7 始终关注安全公告 114
12.8 小结 114
第13章 加密 115
13.1 Internet协议中的加密 115
13.1.1 加密算法、哈希和消息身份认证代码 116
13.1.2 TLS握手 118
13.2 启用HTTPS 120
13.2.1 数字证书 120
13.2.2 获取数字证书 121
13.2.3 安装数字证书 123
13.3 攻击HTTP(和HTTPS) 126
13.3.1 无线路由器 126
13.3.2 Wi-Fi热点 127
13.3.3 互联网服务提供商 127
13.3.4 政府机构 127
13.4 小结 128
第14章 第三方代码 129
14.1 保护依赖项 129
14.1.1 知道你正在运行什么代码 130
14.1.2 能够快速部署新版本 132
14.1.3 对安全问题保持警惕
展开