Web 安全开发指南 PDF 文档
本书分为 5 大部分,共 17 章,详细介绍了 Web 安全开发的必备知识,旨在让前端开发人员、设计师、产品经理等前端开发相关人士了解新形势下的安全技能,涉及从最新的智能手机到老旧的台式计算机等各种设备,并且不限定平台。具体内容包括 :制订安全计划,运用成功的编码实践,创建有用及高效的测试策略,实现维护周期,查找安全资源。
本书适合所有 Web 开发领域的专业人士阅读。
勒索软件、病毒、分布式拒绝服务(distributed denial-of-service,DDoS)攻击、中间人攻击、安全漏洞,这些词都会勾起参与应用程序管理的人噩梦般的回忆。现在已经到了这样的地步:在处理关乎应用程序或其相关数据安全的问题时,任何人都会变得风声鹤唳、极其保守。你肯定不希望承担应用程序安全相关的责任,但这是在所难免的。
任何一种安全失误所造成的灾难性后果都会困扰你的余生,让你承受极大的压力。与大多数错误不同的是,你不能将这种错误隐藏起来,因为它会出现在所有人都能看到的行业媒体上。虽然你的名字不会成为安全事故的代名词,但安全问题仍会给你带来很多麻烦,比如官司缠身、失业等。那么应该如何处理这个问题呢?
逃避并不能解决问题,至少不是长期的解决方案。本书并不打算介绍我们可能会遇到的每一种安全威胁或解决它们的方法,而是提供独立解决任何一种安全问题所需要的指导原则和工具,让你看到成功的希望。本书的真正目的是教你如何将事情做对,从而可以安心地睡个好觉。
目录
前言
第一部分 制订安全计划
第 1 章 定义应用环境
1.1 明确 Web 应用威胁
1.2 理解软件安全保障
1.2.1 考虑 OSSAP
1.2.2 定义 SSA 的要求
1.2.3 对数据和资源分类
1.2.4 进行必要的分析
1.3 探究与语言相关的问题
1.3.1 定义 HTML 的关键问题
1.3.2 定义 CSS 的关键问题
1.3.3 定义 JavaScript 的关键问题
1.4 考虑端点的防御要素
1.4.1 预防安全漏洞
1.4.2 检测安全漏洞
1.4.3 修复受损的软件
1.5 处理云存储
1.6 使用外部代码和资源
1.6.1 定义库的使用
1.6.2 定义 API 的使用
1.6.3 定义微服务的使用
1.6.4 访问外部数据
1.7 允许他人访问
第 2 章 迎合用户需求与期望
2.1 从用户的视角看待应用程序
2.2 考虑自带设备的问题
2.2.1 理解基于 Web 的应用程序的安全性
2.2.2 考虑原生应用的问题
2.2.3 使用定制化浏览器
2.2.4 验证代码兼容性问题
2.2.5 处理几乎连续的设备更新
2.3 设计密码的可选方案
2.3.1 使用口令
2.3.2 使用生物识别的方案
2.3.3 依靠钥匙卡
2.3.4 依靠 USB key
2.3.5 实现令牌策略
2.4 聚焦用户期望
2.4.1 让应用程序易于使用
2.4.2 让应用程序快速运行
2.4.3 创建可靠的环境
2.4.4 客观看待安全性
第 3 章 获取第三方帮助
3.1 发现第三方安全解决方案
3.2 考虑云安全方案
3.2.1 理解数据仓库
3.2.2 处理文件共享问题
3.2.3 考虑云存储
3.3 选择产品类型
3.3.1 使用库
3.3.2 访问 API
3.3.3 考虑微服务
第二部分 运用成功的编码实践
第 4 章 开发成功的界面
4.1 评估 UI
4.1.1 创建简洁的界面
4.1.2 使界面灵活
4.1.3 提供辅助功能
4.1.4 定义可访问性问题
4.2 提供受控制的选择
4.3 选择 UI 的解决方案级别
4.3.1 实现标准的 HTML 控件
4.3.2 使用 CSS 控件
4.3.3 用 JavaScript 创建控件
4.4 校验输入
4.4.1 只允许特定的输入
4.4.2 查找鬼祟的输入
4.4.3 请求新的输入
4.4.4 使用客户端和服务器端校验
4.5 期待意外
第 5 章 构建可靠的代码
5.1 区分可靠性和安全性
5.1.1 定义可靠性和安全性的角色
5.1.2 避免可靠代码中的安全漏洞
5.1.3 聚焦应用程序的功能
5.2 开发团队协议
5.3 创建经验教训的反馈回路
5.4 考虑成套解决方案的问题
5.4.1 处理外部库
5.4.2 处理外部 API
5.4.3 使用框架
5.4.4 调用微服务
第 6 章 包含库
6.1 考虑库的使用
6.1.1 用库增强 CSS
6.1.2 用库与 HTML 交互
6.1.3 用库扩展 JavaScript
6.2 区分内部存储库和外部存储库
6.3 定义库带来的安全威胁
6.3.1 启用严格模式
6.3.2 开发 CSP
6.4 安全地包含库
6.4.1 充分研究库
6.4.2 精确定义库的使用
6.4.3 保持库的小规模和内容聚焦
6.4.4 执行必需的测试
6.5 区分库和框架
第 7 章 慎用 API
7.1 区分 API 和库
7.1.1 考虑流行速度上的差异
7.1.2 区分用法上的差异
7.2 用 API 扩展 JavaScript
7.2.1 定位合适的 API
7.2.2 创建简单示例
7.3 定义 API 带来的安全威胁
7.3.1 MailPoet 毁了你的好声誉
7.3.2 开发阅后即焚的图片
7.3.3 使用“找回我的 iPhone”却丢了手机
7.3.4 Heartbleed 泄露你最重要的信息
7.3.5 遭受 Shellshock 攻击
7.4 通过 JavaScript 安全访问 API
7.4.1 验证 API 的安全性
7.4.2 测试输入和输出
7.4.3 保持数据的局部性和安全性
7.4.4 防御性编码
第 8 章 考虑使用微服务
8.1 定义微服务
8.1.1 详述微服务的特点
8.1.2 区分微服务与库
8.1.3 区分微服务与 API
8.1.4 考虑微服务的策略
8.2 用 JavaScript 调用微服务
8.2.1 理解通信中 REST 的角色
8.2.2 用 JSON 传输数据
8.2.3 用 Node.js 和 Seneca 创建微服务
8.3 定义微服务带来的安全威胁
8.3.1 缺少一致性
8.3.2 考虑虚拟机的角色
8.3.3 使用 JSON 进行数据传输
8.3.4 定义传输层的安全
8.4 创建可替换的微服务路径
第三部分 创建有用及高效的测试策略
第 9 章 像黑客一样思考
9.1 定义 Web 安全扫描的需求
9.2 构建测试系统
9.2.1 考虑测试系统的使用
9.2.2 接受必需的训练
9.2.3 创建正确的环境
9.2.4 使用虚拟机
9.2.5 获取工具
9.2.6 配置系统
9.2.7 恢复系统
9.3 定义最常见的漏洞源
9.3.1 避免 SQL 注入攻击
9.3.2 理解跨站脚本攻击
9.3.3 解决拒绝服务攻击问题
9.3.4 去除可预测的资源定位
9.3.5 克服无意的信息泄露
9.4 在 BYOD 环境中进行测试
9.4.1 配置远程访问区域
9.4.2 检查跨应用程序的攻击
9.4.3 处理真正古老的设备和软件
9.5 依靠用户测试
9.5.1 让用户横冲直撞
9.5.2 开发可重现的步骤
9.5.3 让用户发声
9.6 使用外部的安全测试人员
9.6.1 考虑渗透测试公司
9.6.2 管理项目
9.6.3 覆盖要点
9.6.4 获取报告
第 10 章 创建 API 安全区域
10.1 理解 API 安全区域的概念
10.2 定义 API 安全区域的需求
10.2.1 确保 API 可以工作
10.2.2 实现快速开发
10.2.3 证明最佳的集成
10.2.4 在负载情况下验证 API 的表现
10.2.5 使 API 远离黑客
10.3 用 API 沙盒进行开发
10.3.1 使用现成的解决方案
10.3.2 使用其他供应商的沙盒
10.4 考虑虚拟环境
10.4.1 定义虚拟环境
10.4.2 区分虚拟环境和沙盒
10.4.3 实现虚拟化
10.4.4 依靠应用程序虚拟化
第 11 章 检查库和 API 的漏洞
11.1 创建测试计划
11.1.1 考虑目的和目标
11.1.2 测试内部库
11.1.3 测试内部 API
11.1.4 测试外部库
11.1.5 测试外部 API
11.1.6 扩展测试到微服务
11.2 单独测试库和 API
11.2.1 为库创建测试框架
11.2.2 为 API 创建测试脚本
11.2.3 将测试策略扩展到微服务
11.2.4 开发响应策略
11.3 执行集成测试
11.4 测试与语言相关的问题
11.4.1 设计针对 HTML 问题的测试
11.4.2 设计针对 CSS 问题的测试
11.4.3 设计针对 JavaScript 问题的测试
第 12 章 使用第三方测试
12.1 找到第三方测试服务
12.1.1 定义聘请第三方的理由
12.1.2 考虑测试服务的范围
12.1.3 确保第三方是合法的
12.1.4 面试第三方
12.1.5 对测试的搭建进行测试
12.2 创建测试计划
12.2.1 指明第三方在测试中的目的
12.2.2 创建书面的测试计划
12.2.3 枚举测试输出和报告的要求
12.2.4 考虑测试需求
12.3 实施测试计划
12.3.1 确定公司参与测试的程度
12.3.2 开始测试过程
12.3.3 执行必需的测试监控
12.3.4 处理意外的测试问题
12.4 使用结果报告
12.4.1 与第三方讨论报告输出
12.4.2 向公司展示报告
12.4.3 根据测试建议采取行动
第四部分 实现维护周期
第 13 章 明确定义升级周期
13.1 制订详细的升级周期计划
13.1.1 寻找升级
13.1.2 确定升级的要求
13.1.3 定义升级的临界点
13.1.4 检查升级的问题
13.1.5 创建测试场景
13.1.6 实施变更
13.2 制订升级测试计划
13.2.1 执行所需的预测试
13.2.2 执行所需的集成测试
13.3 将升级移到生产环境
第 14 章 考虑更新选项
14.1 区分升级和更新
14.2 确定何时更新
14.2.1 处理库的更新
14.2.2 处理 API 和微服务的更新
14.2.3 接受自动更新
14.3 更新语言套件
14.3.1 创建语言支持清单
14.3.2 获得可靠的语言专家
14.3.3 验证与语言相关的提示符能否在应用程序中起效
14.3.4 确保数据以正确的格式呈现
14.3.5 定义语言支持测试的特殊要求
14.4 执行紧急更新
14.4.1 尽可能避免紧急情况
14.4.2 组建快速响应团队
14.4.3 执行简化的测试
14.4.4 制订持久的更新计划
14.5 制订更新测试计划
第 15 章 考虑报告的需要
15.1 使用报告以做出改变
15.1.1 避免无用的报告
15.1.2 安排时间为升级和更新做出报告
15.1.3 使用自动生成的报告
15.1.4 使用定制的报告
15.1.5 创建一致的报告
15.1.6 使用报告执行特定的应用任务
15.2 创建内部报告
15.2.1 确定使用哪些数据源
15.2.2 指定报告的使用
15.3 依靠外部生成的报告
15.3.1 从第三方获取完整的报告
15.3.2 从原始数据创建报告
15.3.3 保持内部数据安全
15.4 提供用户反馈
15.4.1 获取用户反馈
15.4.2 确定用户反馈的可用性
第五部分 查找安全资源
第 16 章 跟踪当前的安全威胁
16.1 发现安全威胁信息的来源
16.1.1 阅读与安全相关的专业文章
16.1.2 查看安全网站
16.1.3 获取顾问的意见
16.2 避免信息泛滥
16.3 为基于威胁的升级制订计划
16.3.1 预判不需要采取任何行动的情况
16.3.2 决定升级还是更新
16.3.3 定义升级计划
16.4 为基于威胁的更新制订计划
16.4.1 验证更新是否可解决威胁
16.4.2 确定威胁是否紧急
16.4.3 定义更新计划
16.4.4 要求来自第三方的更新
第 17 章 获取必需的培训
17.1 制订内部的安全培训计划
17.1.1 定义所需的培训
17.1.2 设置合理的目标
17.1.3 使用内部培训师
17.1.4 监控结果
17.2 获取第三方对开发人员的培训
17.2.1 指定培训的要求
17.2.2 为公司聘请第三方培训师
17.2.3 利用网络学校
17.2.4 依靠培训中心
17.2.5 利用本地的学院和大学
17.3 确保用户有安全意识
17.3.1 制订专门的安全培训
17.3.2 结合书面指南进行培训
17.3.3 创建并使用替代的安全提醒
17.3.4 进行培训有效性检查
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/03/oKtUm1r6KxcrqU2m.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Vim 实用技巧 PDF 文档
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论