欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • 软件开发安全之道(概念设计与实施)
      • 作者:(美)洛伦·科恩费尔德|责编:佘洁|译者:徐龙泉
      • 出版社:人民邮电
      • ISBN:9787115617736
      • 出版日期:2024/01/01
      • 页数:226
    • 售价:39.92
  • 内容大纲

        本书共有13章,分为三大部分,即概念、设计和实施。具体内容包括:第一部分(第1~5章)介绍了基础概念,涉及信息安全和隐私基础、威胁建模、对可识别威胁进行防御性缓解的通用策略、安全设计模式,以及使用标准的加密库来缓解常见的风险。第二部分(第6~7章)分别从设计者和审查员的角度讨论了如何使软件设计变得安全,以及可以应用哪些技术来保障安全性。第三部分(第8~13章)涵盖了实施阶段的安全性,在有了一个安全的设计后,这一部分将会阐释如何在不引入额外漏洞的情况下进行软件开发。
        本书是针对软件专业人士编写的技术指南,适合那些希望更好地理解软件安全原则、学习如何实践软件安全设计和实施的专业人员,包括架构师、UX/UI设计师、软件开发工程师、编程人员、测试人员和管理人员阅读。
  • 作者介绍

  • 目录

    第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.2  Web 安全模型
          11.2.1  HTTP协议
          11.2.2  数字证书和HTTPS
          11.2.3  同源策略
          11.2.4  Web Cookies
        11.3  常见的Web漏洞
          11.3.1  跨站脚本攻击
          11.3.2  跨站请求伪造攻击
        11.4  更多的漏洞和缓解措施
      第12章  安全测试
        12.1  什么是安全测试?
          12.1.1  整数溢出
          12.1.2  内存管理问题
          12.1.3  不可靠输入
          12.1.4  网页安全
          12.1.5  异常处理缺陷
        12.2  对GotoFail漏洞执行安全测试
          12.2.1  功能测试
          12.2.2  包含漏洞的功能测试
          12.2.3  安全测试用例
          12.2.4  安全测试的限制
        12.3  编写安全测试用例
          12.3.1  测试输入验证
          12.3.2  测试XSS漏洞
        12.4  模糊测试
        12.5  安全回归测试
        12.6  可用性测试
          12.6.1  资源消耗
          12.6.2  阈值测试
          12.6.3  分布式拒绝服务攻击
        12.7  安全测试的最佳实践

          12.7.1  测试驱动的开发(Test-driven development)
          12.7.2  利用集成测试
          12.7.3  追赶安全测试的进度
      第13章  安全部署最佳实践
        13.1  代码质量
          13.1.1  代码清洁
          13.1.2  异常和错误处理
          13.1.3  记录安全性
          13.1.4  安全代码审查
        13.2  依赖关系
          13.2.1  选择安全的组件
          13.2.2  保护接口
          13.2.3  不要做重复的工作
          13.2.4  对抗传统安全
        13.3  漏洞分类
          13.3.1  DREAD评估
          13.3.2  创建利用漏洞的有效攻击
          13.3.3  作出分类决策
        13.4  维护一个安全的开发环境
          13.4.1  开发和生产相分离
          13.4.2  保护开发工具
          13.4.3  发布产品
    后记
    附录A  设计文档示例
    附录B  词汇表
    附录C  练习
    附录D  备忘单