Web安全开发指南pdf

图书网 2018年12月26日12:35:0631.9K
摘要

Web应用程序的安全性至关重要,病毒、DDoS攻击、中间人攻击、安全漏洞等多种威胁无时无刻不在,任何一种安全事故都可能造成灾难性后果。无论是前端开发人员、网页设计师、用户体验设计师,还是开发运营人员、产品经理、软件工程师,都需具备一定的安全技能,承担起保障Web应用程序及其数据安全的责任。

本书为以上人员提供了具体的Web安全建议以及安全编程示例。书中内容共分为五个部分,分别展示了如何对抗病毒、DDos攻击、安全漏洞和其他恶意入侵,适用于所有平台。
– 为公司制订一份顾及zui新设备以及用户需求的安全计划
– 安全开发技巧实践展示,以及如何有效利用来自库、API和微服务的第三方代码
– 使用沙盒技术、内部和第三方测试技术,像黑客一样思考
– 确定何时以及如何更新应用程序软件,制定维护周期
– 学习如何有效地跟踪安全威胁,确定公司的安全培训需求

Web安全开发指南 内容简介

本书分为5大部分,共17章,详细介绍了Web安全开发的必备知识,旨在让前端开发人员、设计师、产品经理等前端开发相关人士了解新形势下的安全技能,涉及从最新的智能手机到老旧的台式计算机等各种设备,并且不限定平台。具体内容包括:制订安全计划,运用成功的编码实践,创建有用及高效的测试策略,实现维护周期,查找安全资源。

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

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

第二部分 运用成功的编码实践

第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

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

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

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

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

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

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

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

Web安全开发指南 精彩文摘

1.1 明确Web应用威胁

你可以在互联网上找到 Web 应用威胁的清单。其中有一些是全面而不带偏见的,有一些论述了作者认为的最重要的威胁,还有一些会告诉你哪些是最常见的威胁,此外你还可以找到各种各样的其他清单。所有这些清单的问题在于,它们的作者并不了解你的应用程序。比如,SQL 注入攻击只在应用程序以某种方式使用 SQL 时才会成功,但你的应用程序可能并未采用这种方式。

很明显,你需要知道在哪些场景下应该检查什么,而这些清单确实是个好的起点。然而,你需要根据自己的应用程序来考虑这些清单的内容。此外,不要只依赖一份清单,尽量参考多份,这样你能对可能的威胁有更好的认识。带着这样的需求,下面列出了现在最常见的一些 Web 应用威胁。

图书网:Web安全开发指南pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

软件工程/开发项目管理

软件设计重构pdf

以4个设计原则为中心,全面呈现25种在软件项目中导致技术债务的设计坏味 提供一种独特的坏味命名方法,帮助理解坏味的由来并指出潜在重构方法 包含丰富的例证,展现糟糕设计实践的潜在坏味...
软件工程/开发项目管理

DevOps 最佳实践pdf

DevOps 最佳实践 作者: Bart de Best(巴特・德・贝斯特) DevOps 最佳实践 出版社:电子工业出版社 DevOps 最佳实践 内容简介 近年来,许多组织都体会到了使用敏捷方法的...
软件工程/开发项目管理

Android组件化架构pdf

Android走过的十个年头,其技术演进也是有迹可循的,本书作者基于自己在大型App架构的技术演进中成长的经历,将遇到的相关问题进行深入剖析,包括Android 组件化架构、模块化...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:3   其中:访客  3   博主  0
    • 彡旪雨
      彡旪雨 9

      web前端爱好者

      • 彡旪雨
        彡旪雨 9

        你好,站长感谢您收集了这么好的资源,我目前在学前端需要这份web开发权威指南,谢谢。

        • 风雪
          风雪 0

          安全爱好者,非常感谢站长的分享。