TL Web安全开发指南
前言 .........................................................................................................................................................xv
第一部分 制订安全计划
第 1 章 定义应用环境 .......................................................................................................................2
1.1 明确 Web 应用威胁 ...................................................................................................................3
1.2 理解软件安全保障 .....................................................................................................................6
1.2.1 考虑 OSSAP ...................................................................................................................7
1.2.2 定义 SSA 的要求 ...........................................................................................................8
1.2.3 对数据和资源分类 ........................................................................................................9
1.2.4 进行必要的分析 ............................................................................................................9
1.3 探究与语言相关的问题 ...........................................................................................................12
1.3.1 定义 HTML 的关键问题 .............................................................................................12
1.3.2 定义 CSS 的关键问题 .................................................................................................13
1.3.3 定义 JavaScript 的关键问题 ........................................................................................13
1.4 考虑端点的防御要素 ...............................................................................................................14
1.4.1 预防安全漏洞 ..............................................................................................................14
1.4.2 检测安全漏洞 ..............................................................................................................15
1.4.3 修复受损的软件 ..........................................................................................................16
1.5 处理云存储 ...............................................................................................................................16
1.6 使用外部代码和资源 ...............................................................................................................17
1.6.1 定义库的使用 ..............................................................................................................18
vi | 目录
1.6.2 定义 API 的使用 ..........................................................................................................19
1.6.3 定义微服务的使用 ......................................................................................................20
1.6.4 访问外部数据 ..............................................................................................................21
1.7 允许他人访问 ...........................................................................................................................22
第 2 章 迎合用户需求与期望........................................................................................................24
2.1 从用户的视角看待应用程序 ...................................................................................................24
2.2 考虑自带设备的问题 ...............................................................................................................25
2.2.1 理解基于 Web 的应用程序的安全性 .........................................................................26
2.2.2 考虑原生应用的问题 ..................................................................................................27
2.2.3 使用定制化浏览器 ......................................................................................................27
2.2.4 验证代码兼容性问题 ..................................................................................................29
2.2.5 处理几乎连续的设备更新 ..........................................................................................31
2.3 设计密码的可选方案 ...............................................................................................................32
2.3.1 使用口令 ......................................................................................................................33
2.3.2 使用生物识别的方案 ..................................................................................................33
2.3.3 依靠钥匙卡 ..................................................................................................................35
2.3.4 依靠 USB key ...............................................................................................................36
2.3.5 实现令牌策略 ..............................................................................................................36
2.4 聚焦用户期望 ...........................................................................................................................37
2.4.1 让应用程序易于使用 ..................................................................................................37
2.4.2 让应用程序快速运行 ..................................................................................................37
2.4.3 创建可靠的环境 ..........................................................................................................38
2.4.4 客观看待安全性 ..........................................................................................................38
第 3 章 获取第三方帮助 ................................................................................................................39
3.1 发现第三方安全解决方案 .......................................................................................................39
3.2 考虑云安全方案 .......................................................................................................................41
3.2.1 理解数据仓库 ..............................................................................................................42
3.2.2 处理文件共享问题 ......................................................................................................43
3.2.3 考虑云存储 ..................................................................................................................46
3.3 选择产品类型 ...........................................................................................................................47
3.3.1 使用库 ..........................................................................................................................47
3.3.2 访问 API .......................................................................................................................48
3.3.3 考虑微服务 ..................................................................................................................49
目录 | vii
第二部分 运用成功的编码实践
第 4 章 开发成功的界面 ................................................................................................................52
4.1 评估 UI......................................................................................................................................53
4.1.1 创建简洁的界面 ..........................................................................................................53
4.1.2 使界面灵活 ..................................................................................................................56
4.1.3 提供辅助功能 ..............................................................................................................58
4.1.4 定义可访问性问题 ......................................................................................................59
4.2 提供受控制的选择 ...................................................................................................................61
4.3 选择 UI 的解决方案级别 .........................................................................................................65
4.3.1 实现标准的 HTML 控件 .............................................................................................65
4.3.2 使用 CSS 控件 .............................................................................................................65
4.3.3 用 JavaScript 创建控件 ................................................................................................67
4.4 校验输入 ...................................................................................................................................68
4.4.1 只允许特定的输入 ......................................................................................................68
4.4.2 查找鬼祟的输入 ..........................................................................................................69
4.4.3 请求新的输入 ..............................................................................................................69
4.4.4 使用客户端和服务器端校验 ......................................................................................70
4.5 期待意外 ...................................................................................................................................71
第 5 章 构建可靠的代码 ................................................................................................................72
5.1 区分可靠性和安全性 ...............................................................................................................73
5.1.1 定义可靠性和安全性的角色 ......................................................................................73
5.1.2 避免可靠代码中的安全漏洞 ......................................................................................76
5.1.3 聚焦应用程序的功能 ..................................................................................................77
5.2 开发团队协议 ...........................................................................................................................77
5.3 创建经验教训的反馈回路 .......................................................................................................80
5.4 考虑成套解决方案的问题 .......................................................................................................81
5.4.1 处理外部库 ..................................................................................................................82
5.4.2 处理外部 API ...............................................................................................................83
5.4.3 使用框架 ......................................................................................................................85
5.4.4 调用微服务 ..................................................................................................................87
第 6 章 包含库 ..................................................................................................................................88
6.1 考虑库的使用 ...........................................................................................................................89
6.1.1 用库增强 CSS ..............................................................................................................89
viii | 目录
6.1.2 用库与 HTML 交互 .....................................................................................................91
6.1.3 用库扩展 JavaScript .....................................................................................................93
6.2 区分内部存储库和外部存储库 ...............................................................................................95
6.3 定义库带来的安全威胁 ...........................................................................................................95
6.3.1 启用严格模式 ..............................................................................................................97
6.3.2 开发 CSP ......................................................................................................................99
6.4 安全地包含库 .........................................................................................................................100
6.4.1 充分研究库 ................................................................................................................101
6.4.2 精确定义库的使用 ....................................................................................................101
6.4.3 保持库的小规模和内容聚焦 ....................................................................................101
6.4.4 执行必需的测试 ........................................................................................................102
6.5 区分库和框架 .........................................................................................................................103
第 7 章 慎用 API ............................................................................................................................105
7.1 区分 API 和库 ........................................................................................................................106
7.1.1 考虑流行速度上的差异 ............................................................................................106
7.1.2 区分用法上的差异 ....................................................................................................107
7.2 用 API 扩展 JavaScript ...........................................................................................................108
7.2.1 定位合适的 API .........................................................................................................108
7.2.2 创建简单示例 ............................................................................................................109
7.3 定义 API 带来的安全威胁 ....................................................................................................113
7.3.1 MailPoet 毁了你的好声誉 .........................................................................................113
7.3.2 开发阅后即焚的图片 ................................................................................................114
7.3.3 使用“找回我的 iPhone”却丢了手机 ....................................................................114
7.3.4 Heartbleed 泄露你最重要的信息 ..............................................................................115
7.3.5 遭受 Shellshock 攻击 .................................................................................................115
7.4 通过 JavaScript 安全访问 API ...............................................................................................116
7.4.1 验证 API 的安全性 ....................................................................................................116
7.4.2 测试输入和输出 ........................................................................................................117
7.4.3 保持数据的局部性和安全性 ....................................................................................117
7.4.4 防御性编码 ................................................................................................................117
第 8 章 考虑使用微服务 ..............................................................................................................118
8.1 定义微服务 .............................................................................................................................119
8.1.1 详述微服务的特点 ....................................................................................................119
8.1.2 区分微服务与库 ........................................................................................................120
8.1.3 区分微服务与 API .....................................................................................................120
目录 | ix
8.1.4 考虑微服务的策略 ....................................................................................................120
8.2 用 JavaScript 调用微服务 ......................................................................................................121
8.2.1 理解通信中 REST 的角色 .........................................................................................122
8.2.2 用 JSON 传输数据 .....................................................................................................123
8.2.3 用 Node.js 和 Seneca 创建微服务 .............................................................................124
8.3 定义微服务带来的安全威胁 .................................................................................................126
8.3.1 缺少一致性 ................................................................................................................126
8.3.2 考虑虚拟机的角色 ....................................................................................................126
8.3.3 使用 JSON 进行数据传输 .........................................................................................127
8.3.4 定义传输层的安全 ....................................................................................................128
8.4 创建可替换的微服务路径 .....................................................................................................129
第三部分 创建有用及高效的测试策略
第 9 章 像黑客一样思考 ..............................................................................................................132
9.1 定义 Web 安全扫描的需求 ...................................................................................................132
9.2 构建测试系统 .........................................................................................................................136
9.2.1 考虑测试系统的使用 ................................................................................................136
9.2.2 接受必需的训练 ........................................................................................................136
9.2.3 创建正确的环境 ........................................................................................................137
9.2.4 使用虚拟机 ................................................................................................................137
9.2.5 获取工具 ....................................................................................................................138
9.2.6 配置系统 ....................................................................................................................138
9.2.7 恢复系统 ....................................................................................................................139
9.3 定义最常见的漏洞源 .............................................................................................................139
9.3.1 避免 SQL 注入攻击 ...................................................................................................140
9.3.2 理解跨站脚本攻击 ....................................................................................................141
9.3.3 解决拒绝服务攻击问题 ............................................................................................142
9.3.4 去除可预测的资源定位 ............................................................................................142
9.3.5 克服无意的信息泄露 ................................................................................................143
9.4 在 BYOD 环境中进行测试....................................................................................................143
9.4.1 配置远程访问区域 ....................................................................................................144
9.4.2 检查跨应用程序的攻击 ............................................................................................144
9.4.3 处理真正古老的设备和软件 ....................................................................................145
9.5 依靠用户测试 .........................................................................................................................145
x | 目录
9.5.1 让用户横冲直撞 ........................................................................................................146
9.5.2 开发可重现的步骤 ....................................................................................................147
9.5.3 让用户发声 ................................................................................................................147
9.6 使用外部的安全测试人员 .....................................................................................................148
9.6.1 考虑渗透测试公司 ....................................................................................................148
9.6.2 管理项目 ....................................................................................................................149
9.6.3 覆盖要点 ....................................................................................................................149
9.6.4 获取报告 ....................................................................................................................149
第 10 章 创建 API 安全区域 .......................................................................................................151
10.1 理解 API 安全区域的概念 ..................................................................................................152
10.2 定义 API 安全区域的需求 ..................................................................................................153
10.2.1 确保 API 可以工作 ................................................................................................153
10.2.2 实现快速开发 .........................................................................................................153
10.2.3 证明最佳的集成 .....................................................................................................154
10.2.4 在负载情况下验证 API 的表现 ............................................................................158
10.2.5 使 API 远离黑客 ....................................................................................................159
10.3 用 API 沙盒进行开发 ..........................................................................................................159
10.3.1 使用现成的解决方案 .............................................................................................161
10.3.2 使用其他供应商的沙盒 .........................................................................................162
10.4 考虑虚拟环境 .......................................................................................................................164
10.4.1 定义虚拟环境 .........................................................................................................164
10.4.2 区分虚拟环境和沙盒 .............................................................................................164
10.4.3 实现虚拟化 .............................................................................................................165
10.4.4 依靠应用程序虚拟化 .............................................................................................165
第 11 章 检查库和 API 的漏洞 ...................................................................................................167
11.1 创建测试计划 .......................................................................................................................168
11.1.1 考虑目的和目标 .....................................................................................................168
11.1.2 测试内部库 .............................................................................................................175
11.1.3 测试内部 API ..........................................................................................................175
11.1.4 测试外部库 .............................................................................................................175
11.1.5 测试外部 API ..........................................................................................................176
11.1.6 扩展测试到微服务 .................................................................................................176
11.2 单独测试库和 API ...............................................................................................................177
11.2.1 为库创建测试框架 .................................................................................................177
目录 | xi
11.2.2 为 API 创建测试脚本 .............................................................................................178
11.2.3 将测试策略扩展到微服务 .....................................................................................178
11.2.4 开发响应策略 .........................................................................................................178
11.3 执行集成测试 .......................................................................................................................179
11.4 测试与语言相关的问题 .......................................................................................................180
11.4.1 设计针对 HTML 问题的测试 ................................................................................180
11.4.2 设计针对 CSS 问题的测试 ....................................................................................181
11.4.3 设计针对 JavaScript 问题的测试 ..........................................................................181
第 12 章 使用第三方测试 ............................................................................................................184
12.1 找到第三方测试服务 ...........................................................................................................185
12.1.1 定义聘请第三方的理由 .........................................................................................185
12.1.2 考虑测试服务的范围 .............................................................................................186
12.1.3 确保第三方是合法的 .............................................................................................188
12.1.4 面试第三方 .............................................................................................................188
12.1.5 对测试的搭建进行测试 .........................................................................................188
12.2 创建测试计划 .......................................................................................................................189
12.2.1 指明第三方在测试中的目的 .................................................................................189
12.2.2 创建书面的测试计划 .............................................................................................189
12.2.3 枚举测试输出和报告的要求 .................................................................................190
12.2.4 考虑测试需求 .........................................................................................................190
12.3 实施测试计划 .......................................................................................................................190
12.3.1 确定公司参与测试的程度 .....................................................................................191
12.3.2 开始测试过程 .........................................................................................................191
12.3.3 执行必需的测试监控 .............................................................................................191
12.3.4 处理意外的测试问题 .............................................................................................192
12.4 使用结果报告 .......................................................................................................................192
12.4.1 与第三方讨论报告输出 .........................................................................................192
12.4.2 向公司展示报告 .....................................................................................................193
12.4.3 根据测试建议采取行动 .........................................................................................193
第四部分 实现维护周期
第 13 章 明确定义升级周期 .......................................................................................................196
13.1 制订详细的升级周期计划 ...................................................................................................196
xii | 目录
13.1.1 寻找升级 .................................................................................................................198
13.1.2 确定升级的要求 .....................................................................................................198
13.1.3 定义升级的临界点 .................................................................................................200
13.1.4 检查升级的问题 .....................................................................................................201
13.1.5 创建测试场景 .........................................................................................................202
13.1.6 实施变更 .................................................................................................................203
13.2 制订升级测试计划 ...............................................................................................................203
13.2.1 执行所需的预测试 .................................................................................................204
13.2.2 执行所需的集成测试 .............................................................................................204
13.3 将升级移到生产环境 ...........................................................................................................205
第 14 章 考虑更新选项 ................................................................................................................207
14.1 区分升级和更新 ...................................................................................................................208
14.2 确定何时更新 .......................................................................................................................209
14.2.1 处理库的更新 .........................................................................................................209
14.2.2 处理 API 和微服务的更新 ....................................................................................210
14.2.3 接受自动更新 .........................................................................................................211
14.3 更新语言套件 .......................................................................................................................212
14.3.1 创建语言支持清单 .................................................................................................212
14.3.2 获得可靠的语言专家 .............................................................................................213
14.3.3 验证与语言相关的提示符能否在应用程序中起效 .............................................214
14.3.4 确保数据以正确的格式呈现 .................................................................................214
14.3.5 定义语言支持测试的特殊要求 .............................................................................214
14.4 执行紧急更新 .......................................................................................................................215
14.4.1 尽可能避免紧急情况 .............................................................................................215
14.4.2 组建快速响应团队 .................................................................................................215
14.4.3 执行简化的测试 .....................................................................................................216
14.4.4 制订持久的更新计划 .............................................................................................216
14.5 制订更新测试计划 ...............................................................................................................216
第 15 章 考虑报告的需要 ............................................................................................................218
15.1 使用报告以做出改变 ...........................................................................................................219
15.1.1 避免无用的报告 .....................................................................................................219
15.1.2 安排时间为升级和更新做出报告 .........................................................................220
15.1.3 使用自动生成的报告 .............................................................................................221
15.1.4 使用定制的报告 .....................................................................................................221
目录 | xiii
15.1.5 创建一致的报告 .....................................................................................................222
15.1.6 使用报告执行特定的应用任务 .............................................................................223
15.2 创建内部报告 .......................................................................................................................223
15.2.1 确定使用哪些数据源 .............................................................................................223
15.2.2 指定报告的使用 .....................................................................................................224
15.3 依靠外部生成的报告 ...........................................................................................................225
15.3.1 从第三方获取完整的报告 .....................................................................................225
15.3.2 从原始数据创建报告 .............................................................................................225
15.3.3 保持内部数据安全 .................................................................................................225
15.4 提供用户反馈 .......................................................................................................................226
15.4.1 获取用户反馈 .........................................................................................................226
15.4.2 确定用户反馈的可用性 .........................................................................................227
第五部分 查找安全资源
第 16 章 跟踪当前的安全威胁 ...................................................................................................230
16.1 发现安全威胁信息的来源 ...................................................................................................231
16.1.1 阅读与安全相关的专业文章 .................................................................................231
16.1.2 查看安全网站 .........................................................................................................232
16.1.3 获取顾问的意见 .....................................................................................................234
16.2 避免信息泛滥 .......................................................................................................................235
16.3 为基于威胁的升级制订计划 ...............................................................................................236
16.3.1 预判不需要采取任何行动的情况 .........................................................................236
16.3.2 决定升级还是更新 .................................................................................................236
16.3.3 定义升级计划 .........................................................................................................238
16.4 为基于威胁的更新制订计划 ...............................................................................................238
16.4.1 验证更新是否可解决威胁 .....................................................................................239
16.4.2 确定威胁是否紧急 .................................................................................................240
16.4.3 定义更新计划 .........................................................................................................240
16.4.4 要求来自第三方的更新 .........................................................................................240
第 17 章 获取必需的培训 ............................................................................................................241
17.1 制订内部的安全培训计划 ...................................................................................................242
17.1.1 定义所需的培训 .....................................................................................................242
17.1.2 设置合理的目标 .....................................................................................................243
xiv | 目录
17.1.3 使用内部培训师 .....................................................................................................243
17.1.4 监控结果 .................................................................................................................244
17.2 获取第三方对开发人员的培训 ...........................................................................................245
17.2.1 指定培训的要求 .....................................................................................................246
17.2.2 为公司聘请第三方培训师 .....................................................................................247
17.2.3 使用在线学校 .........................................................................................................247
17.2.4 依靠培训中心 .........................................................................................................248
17.2.5 利用本地的学院和大学 .........................................................................................248
17.3 确保用户有安全意识 ...........................................................................................................249
17.3.1 制定专门的安全培训 .............................................................................................249
17.3.2 结合书面指南进行培训 .........................................................................................249
17.3.3 创建并使用替代的安全提醒 .................................................................................250
17.3.4 进行培训有效性检查 .............................................................................................250
关于作者 ..............................................................................................................................................251
关于封面 ..............................................................................................................................................251
版权声明 ..............................................................................................................................................252
**** Hidden Message *****
确实是难得好帖啊,顶先 啥也不说了,感谢楼主分享哇! 啥也不说了,感谢楼主分享哇! 啥也不说了,感谢楼主分享哇! 正需要,支持楼主大人了! 啥也不说了,感谢楼主分享哇! 回的人少,我来小顶一下 啥也不说了,感谢楼主分享哇! 啥也不说了,感谢楼主分享哇!
页:
[1]
2