内容简介
本书被誉为安全技术领域的“黄帝内经”,由安全技术大师亲力打造,,数位安全技术专家联袂。综合论述如何在软件开发整个生命周期内建立安全屏障,对于设计安全的软件给出了高屋建瓴的指南,全面翔实,深入浅出。对于任何关注安全软件开发的人来说,都是一本必备之书。
本书分为两大部分。第一部分介绍在编写代码之前应该了解的软件安全知识,讲解如何在软件工程的实践中引入安全性,任何涉及软件开发的人都应该阅读。主要内容包括:软件安全概论、软件安全风险管理、技术的选择、开放源代码和封闭源代码、软件安全的指导原则、软件审计。第二部分涉及软件开发实现的细节,介绍如何在编程中避免一些常见的安全问题,适合编程一线的技术人员参考。主要内容包括:缓冲区溢出、访问控制、竞争条件、随机性和确定性、密码学的应用、信任管理和输入验证、口令认证、数据库安全、客户端安全、穿越防火墙等。
目录
译者序
对本书的赞誉
序
前言
致谢
第1章 软件安全概论 1
1.1 都是软件惹的祸 1
1.2 对安全问题的处理 4
1.2.1 Bugtraq 5
1.2.2 CERT 公告 5
1.2.3 RISKS文摘 6
1.3 影响软件安全的技术趋势 6
1.4 非功能性需求 9
1.4.1 什么是安全 10
1.4.2 难道只是可靠性 10
1.5 “渗透-修补”是个坏方法 11
1.6 艺术和工程 12
1.7 安全目标 12
1.7.1 13
1.7.2 跟踪与审计 13
1.7.3 监控 13
1.7.4 隐私和保密 14
1.7.5 多级安全 14
1.7.6 匿名 14
1.7.7 认证 15
1.7.8 完整性 16
1.8 常见软件安全缺陷 16
1.9 软件项目目标 17
1.10 结论 18
第2章 软件安全风险管理 19
2.1 软件安全风险管理概述 19
2.2 安全人员的任务 21
2.3 软件生命周期中的软件安全人员 22
2.3.1 获取需求 22
2.3.2 风险评估 23
2.3.3 安全设计 24
2.3.4 实现 25
2.3.5 安全测试 25
2.4 现实的权衡 26
2.5 让人们去思考安全性 26
2.6 软件风险管理实践 26
2.6.1 当开发走向歧途 27
2.6.2 当安全分析走向歧途 27
2.7 通用准则 28
2.8 结论 30
第3章 技术的选择 31
3.1 语言的选择 31
3.2 分布式对象平台的选择 34
3.2.1 COBRA 34
3.2.2 DCOM 35
3.2.3 EJB和RMI 37
3.3 操作系统的选择 37
3.4 认证技术 38
3.4.1 基于主机的认证 39
3.4.2 物理令牌 40
3.4.3 生物认证 40
3.4.4 密码认证 41
3.4.5 深度防御与认证 41
3.5 结论 42
第4章 开放源代码和封闭源代码 43
4.1 通过隐藏实现安全 43
4.1.1 逆向工程 45
4.1.2 代码混淆 46
4.1.3 紧包软件的安全 47
4.1.4 通过隐藏实现安全并非 47
4.2 开源软件 47
4.3 “多眼球现象”是真的吗 47
4.3.1 漏洞检测是困难的 49
4.3.2 其他的忧虑 50
4.4 关于发布加密算法 51
4.5 另外两个关于开源的谬论 51
4.5.1 微软谬论 51
4.5.2 Java谬论 52
4.6 例子:GNU Mailman的安全 52
4.7 证据:特洛伊木马 53
4.8 开放源码还是不开放源码 54
4.9 另一个来自于缓冲区溢出的安全教训 54
4.10 忠告 55
4.11 结论 55
第5章 软件安全的指导原则 56
5.1 确保弱环节的安全 57
5.2 深度防御 59
5.3 失效安全 60
5.4 特权 62
5.5 分割 63
5.6 尽可能简单 64
5.7 提升隐私权 66
5.8 记住隐藏信息很困难 68
5.9 不要轻信 69
5.10 使用社会资源 70
5.11 结论 70
第6章 软件审计 71
6.1 架构的安全性分析 73
6.1.1 攻击树 74
6.1.2 报告分析结果 78
6.2 实现安全性分析 79
6.2.1 审计源代
摘要与插图
第1章软件安全概论
任何程序,不管看起来多严谨,都会存在安全漏洞……因此我坚信任何程序直到被证明无漏洞之前都是有漏洞的。
——William Cheswick和《防火墙与因特网安全》的作者Steve Bellovin
计算机安全是一个重要的课题。随着经济的发展,网络渗入到我们生活的点点滴滴,安全和隐私越来越重要。计算机安全已经不再仅仅是前沿技术,而开始逐渐影响我们的日常生活。
关于安全问题的讨论可能出现在任何地方,从新闻头条到电视脱口秀,都不足为奇。由于普通公众对安全知之不多,因此大部分关于计算机安全的讨论都包含在基础的技术话题之中,例如什么是防火墙,什么是密码,哪个防病毒产品更好。大部分计算机安全问题报道的热点话题,通常与难以控制的病毒或者恶意攻击有关。历,大众媒体更多关注病毒和拒绝服务攻击,很多人仍然记得库尔尼科娃蠕虫(Anna Kournikova worm)、爱虫(Love Bug)或者梅利莎病毒(Melissa virus ad nauseam)。这些话题无疑是重要的。不过,媒体在报道安全问题时通常没有涉及问题的核心。其实,在每个计算机安全问题背后,在每个恶意攻击背后,都存在一个共同问题——糟糕的软件。