![]()
内容推荐 本书共有13章,分为三大部分,即概念、设计和实施。具体内容包括:第一部分(第1~5章)介绍了基础概念,涉及信息安全和隐私基础、威胁建模、对可识别威胁进行防御性缓解的通用策略、安全设计模式,以及使用标准的加密库来缓解常见的风险。第二部分(第6~7章)分别从设计者和审查员的角度讨论了如何使软件设计变得安全,以及可以应用哪些技术来保障安全性。第三部分(第8~13章)涵盖了实施阶段的安全性,在有了一个安全的设计后,这一部分将会阐释如何在不引入额外漏洞的情况下进行软件开发。 本书是针对软件专业人士编写的技术指南,适合那些希望更好地理解软件安全原则、学习如何实践软件安全设计和实施的专业人员,包括架构师、UX/UI设计师、软件开发工程师、编程人员、测试人员和管理人员阅读。 作者简介 徐龙泉,北京师范大学在读博士,硕士毕业于华南理工大学,珠海市高层次人才,高级工程师,思科网络技术学院金牌讲师,累计培训了1000多位来自全国高校的教师,近几年专注于网络安全相关领域的师资培训及企业定制化培训。出版教材6部,发表论文6篇,获发明专利2项,获软件著作权3项,主持教科研项目6项。 目录 第1部分 概念 第1章 基础 1.1 理解安全 1.2 信任 1.2.1 信任感 1.2.2 比特位不是肉眼可见的 1.2.3 能力与不足 1.2.4 信任是一个频谱 1.2.5 信任决策 1.3 经典原则 1.3.1 信息安全的CIA 1.3.2 黄金标准 1.3.3 隐私 第2章 威胁 2.1 对抗性视角 2.2 四个问题 2.3 威胁建模 2.3.1 从一个模型入手 2.3.2 判断资产 2.3.3 判断攻击面 2.3.4 判断信任边界 2.3.5 判断威胁 2.3.6 缓解威胁 2.4 隐私方面的考量因素 2.5 无处不在的威胁建模 第3章 缓解 3.1 解决威胁 3.2 结构性的缓解战略 3.2.1 把攻击面减到最小 3.2.2 缩窄漏洞窗口 3.2.3 把暴露的数据减到最少 3.3 访问策略与访问控制 3.4 接口 3.5 通信 3.6 存储 第4章 模式 4.1 设计属性 4.1.1 极简设计 4.1.2 透明设计 4.2 暴露最少信息 4.2.1 最小权限 4.2.2 最少信息 4.2.3 默认防御 4.2.4 放行列表与阻塞列表 4.2.5 避免可预测性 4.2.6 失效安全 4.3 强力执行 4.3.1 完全仲裁原则 4.3.2 最少共同机制 4.4 冗余 4.4.1 深度防御 4.4.2 权限分离 4.5 信任与责任 4.5.1 不盲目信任 4.5.2 接受安全责任 4.6 反模式 4.6.1 代理混淆问题 4.6.2 意图与恶意 4.6.3 可信的代理 4.6.4 信任回流 4.6.5 第三方Hook 4.6.6 组件不可修补 第5章 密码学 5.1 加密工具 5.2 随机数 5.2.1 伪随机数 5.2.2 加密安全的伪随机数 5.3 消息认证代码 5.3.1 使用MAC来防止篡改 5.3.2 重放攻击 5.3.3 安全MAC通信 5.4 对称加密 5.4.1 一次性填充 5.4.2 高级加密标准 5.4.3 使用对称加密 5.5 非对称加密 5.6 RSA密码系统 5.7 数字签名 5.8 数字证书 5.9 密钥交换 5.10 使用加密 第2部分 设计 第6章 安全的设计 6.1 在设计中集成安全性 6.1.1 明确设计中的假定规则 6.1.2 定义范围 6.1.3 设置安全要求 6.1.4 威胁建模 6.2 建立缓解措施 6.2.1 设计接口 6.2.2 设计数据处理 6.3 将隐私融入设计 6.4 规划整个软件生命周期 6.5 权衡取舍 6.6 设计的简洁性 第7章 安全设计审查 7.1 SDR 流程 7.1.1 为什么要执行SDR? 7.1.2 什么时候执行SDR? 7.1.3 文档是必不可少的 7.2 SDR 流程 7.2.1 研究 7.2.2 询问 7.3.3 识别 7.3.4 合作 7.3.5 撰写 7.3.6 跟进 7.3 评估设计安全性 7.3.1 以四个问题为指导 7.3.2 我们在做什么? 7.3.3 会出什么问题? 7.3.4 我们要怎么做? 7.3.5 我们做的好吗? 7.3.6 在哪里挖掘 7.3.7 隐私审查 7.3.8 审查更新 7.4 处理分歧 7.4.1 巧妙地沟通 7.4.2 案例研究:困难的审查 7.4.3 上报分歧 7.5 练习 第3部分 实施 第8章 安全地编程 8.1 挑战 8.1.1 恶意影响 8.1.2 漏洞是bug 8.1.3 漏洞链 8.1.4 Bug和熵 8.1.5 警觉 8.2 研究:GotoFail 8.2.1 单行漏洞 8.2.2 当心Footgun 8.2.3 GotoFail的教训 8.3 编码漏洞 8.3.1 原子性 8.3.2 时序攻击 8.3.3 序列化 8.4 非常嫌疑犯 第9章 低级编码缺陷 9.1 算数漏洞 9.1.1 定宽整数漏洞 9.1.2 浮点精度漏洞 9.1.3 示例:浮点下溢 9.1.4 示例:整数溢出 9.1.5 安全算数 9.2 内存访问漏洞 9.2.1 内存管理 9.2.2 缓冲区溢出 9.2.3 示例:内存分配漏洞 9.2.4 案例研究:Heartbleed漏洞 第10章 不受信任的输入 10.1 输入验证 10.1.1 确定有效性 10.1.2 验证标准 10.1.3 拒绝无效输入 10.1.4 纠正无效输入 10.2 字符串漏洞 10.2.1 长度问题 10.2.2 Unicode问题 10.2.3 编码和字形 10.2.4 大小写转换 10.3 注入攻击漏洞 10.3.1 SQL注入攻击 10.3.2 路径遍历 10.3.3 正则表达式 10.3.4 XML的危险 10.4 缓解注入攻击 第11章 WEB 安全 11.1 建立在框架之上 11 |