App 下载
注册
登录
|
搜索
正在搜索中...
首页
我的书架
我的主页
我的收藏
我的书评
本书被誉为安全技术领域的“黄帝内经”,由安全技术大师亲力打造,畅销全球,数位安全技术专家联袂推荐。综合论述如何在软件开发整个生命周期内建立安全屏障,对于设计安全的软件给出
……
[ 展开全部 ]
了高屋建瓴的指南,全面翔实,深入浅出。对于任何关注安全软件开发的人来说,都是一本必备之书。 本书分为两大部分。第一部分介绍在编写代码之前应该了解的软件安全知识,讲解如何在软件工程的实践中引入安全性,任何涉及软件开发的人都应该阅读。主要内容包括:软件安全概论、软件安全风险管理、技术的选择、开放源代码和封闭源代码、软件安全的指导原则、软件审计。第二部分涉及软件开发实现的细节,介绍如何在编程中避免一些常见的安全问题,适合编程一线的技术人员参考。主要内容包括:缓冲区溢出、访问控制、竞争条件、随机性和确定性、密码学的应用、信任管理和输入验证、口令认证、数据库安全、客户端安全、穿越防火墙等。
[ 收起 ]
作者:[美]John Viega Gary Mcgraw
出版社:机械工业出版社
定价:79.00元
ISBN:7111459156
给个评价
做个书摘
书摘 (21 )
评价 (1 )
查看所有书摘
按目录显示书摘
只显示目录
译者序
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
对本书的赞誉
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
序
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
前言
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
致谢
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第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 审计源代码 79
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.2.2 源码级的安全审计工具 80
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.2.3 在分析中使用RATS 81
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.2.4 安全扫描软件的有效性 82
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.3 结论 83
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第7章 缓冲区溢出 84
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.1 什么是缓冲区溢出 86
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2 为什么缓冲溢出是安全问题 87
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.3 缓冲区溢出的防御 89
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.4 主要的陷阱 89
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.5 内部缓冲区溢出 93
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.6 更多的输入溢出 93
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.7 其他风险 94
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.8 帮助工具 94
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.9 堆破坏和栈破坏 96
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.10 堆溢出 98
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.11 栈溢出 101
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.11.1 破译堆栈 101
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.11.2 陷入无限循环……并更糟 105
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.12 代码攻击 113
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.12.1 UNIX漏洞利用 114
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.12.2 关于Windows 119
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.13 结论 119
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第8章 访问控制 120
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1 UNIX访问控制模型 120
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.1 UNIX权限工作原理 121
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.2 修改文件属性 122
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.3 修改文件的所有权 124
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.4 umask命令 125
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.5 编程接口 125
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.6 Setuid编程 127
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.2 Windows NT的访问控制 130
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.3 分割 132
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.4 细粒度权限 134
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.5 结论 134
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第9章 竞争条件 135
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.1 什么是竞争条件 135
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2 检查时间与使用时间 138
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.1 攻破passwd 139
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.2 避免 TOCTOU 问题 142
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.3 安全的文件访问 143
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.4 临时文件 146
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.5 文件锁定 146
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.6 其他竞争条件 147
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.7 结论 148
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第10章 随机性和确定性 149
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.1 伪随机数发生器 149
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.1.1 伪随机数发生器实例 151
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.1.2 Blum-Blum-ShubPRNG 152
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.1.3 Tiny PRNG 153
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.1.4 对PRNG的攻击 153
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.1.5 在网络赌博游戏中作弊 153
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.1.6 PRNG的统计测试 155
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.2 熵的收集和估计 155
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.2.1 硬件解决方案 156
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.2.2 软件解决方案 158
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.2.3 糟糕的熵收集示例 163
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.3 处理熵 164
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.4 实用的随机数据来源 166
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.4.1 Tiny 166
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.4.2 Windows的随机数据 167
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.4.3 Linux的随机数 167
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.4.4 Java中的随机数 169
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
10.5 结论 171
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第11章 密码学的应用 172
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.1 一般性建议 172
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.1.1 开发者并不是密码专家 173
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.1.2 数据完整性 174
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.1.3 密码出口的有关法律 174
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.2 常用密码库 175
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.2.1 Cryptlib 175
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.2.2 OpenSSL 176
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.2.3 Crypto++ 177
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.2.4 BSAFE 178
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.2.5 Cryptix 179
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.3 利用密码学编程 180
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.3.1 加密 180
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.3.2 散列算法 184
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.3.3 公共密钥加密 185
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.3.4 多线程 189
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.3.5 cookie加密 189
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.4 加密散列更多的应用 191
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.5 SSL和TLS 192
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.6 Stunnel 194
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.7 一次一密 195
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
11.8 结论 198
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第12章 信任管理和输入验证 199
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.1 关于信任 200
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2 不恰当信任的例子 201
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2.1 信任是传递的 201
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2.2 预防恶意的调用者 204
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2.3 安全地调用其他程序 208
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2.4 源自Web的问题 210
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2.5 客户端安全 212
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2.6 Perl问题 214
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.2.7 格式字符串攻击 215
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.3 自动检测输入问题 216
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
12.4结论 219
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第13章 口令认证 220
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.1?口令存储 220
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.2?向口令数据库中添加用户 222
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.3?口令认证的方式 231
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.4?口令选择 235
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.4.1?更多的建议 236
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.4.2?掷骰子 237
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.4.3?口令短语 240
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.4.4?应用程序选择的口令 241
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.5?一次性口令 242
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
13.6?结论 252
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第14章 数据库安全 253
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
14.1?基础知识 253
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
14.2?访问控制 254
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
14.3?在访问控制中使用视图 256
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
14.4?字段保护 257
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
14.5?针对统计攻击的安全防卫 260
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
14.6?结论 263
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第15章 客户端安全 264
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.1?版权保护方案 266
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.1.1?许可证文件 273
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.1.2?防范偶然性盗版 274
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.1.3?其他的许可证特性 275
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.1.4?其他的版权保护方案 275
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.1.5?对不可信客户端的身份认证 276
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.2?防篡改 277
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.2.1?反调试措施 277
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.2.2?校验和 279
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.2.3?应对滥用 279
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.2.4?诱饵 280
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.3?代码混淆 280
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.3.1?基本的代码混淆技术 281
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.3.2?加密部分程序 282
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
15.4?结论 284
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第16章 穿越防火墙 285
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
16.1?基本策略 285
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
16.2?客户端代理 287
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
16.3?服务器代理 288
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
16.4?SOCKS 289
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
16.5?对等网络 290
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
16.6?结论 292
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
附录A 密码学基础 293
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
参考文献 310
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
导购链接
×
做书摘
文字书摘
读图识字
至少还需要输入
10
字
保存原图片为书摘
上传图片
识别
最多输入
500
个字
上传图片
重新上传
写点笔记吧
至少还需要输入
10
字
章节(选填)
译者序
对本书的赞誉
序
前言
致谢
第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 审计源代码 79
6.2.2 源码级的安全审计工具 80
6.2.3 在分析中使用RATS 81
6.2.4 安全扫描软件的有效性 82
6.3 结论 83
第7章 缓冲区溢出 84
7.1 什么是缓冲区溢出 86
7.2 为什么缓冲溢出是安全问题 87
7.3 缓冲区溢出的防御 89
7.4 主要的陷阱 89
7.5 内部缓冲区溢出 93
7.6 更多的输入溢出 93
7.7 其他风险 94
7.8 帮助工具 94
7.9 堆破坏和栈破坏 96
7.10 堆溢出 98
7.11 栈溢出 101
7.11.1 破译堆栈 101
7.11.2 陷入无限循环……并更糟 105
7.12 代码攻击 113
7.12.1 UNIX漏洞利用 114
7.12.2 关于Windows 119
7.13 结论 119
第8章 访问控制 120
8.1 UNIX访问控制模型 120
8.1.1 UNIX权限工作原理 121
8.1.2 修改文件属性 122
8.1.3 修改文件的所有权 124
8.1.4 umask命令 125
8.1.5 编程接口 125
8.1.6 Setuid编程 127
8.2 Windows NT的访问控制 130
8.3 分割 132
8.4 细粒度权限 134
8.5 结论 134
第9章 竞争条件 135
9.1 什么是竞争条件 135
9.2 检查时间与使用时间 138
9.2.1 攻破passwd 139
9.2.2 避免 TOCTOU 问题 142
9.3 安全的文件访问 143
9.4 临时文件 146
9.5 文件锁定 146
9.6 其他竞争条件 147
9.7 结论 148
第10章 随机性和确定性 149
10.1 伪随机数发生器 149
10.1.1 伪随机数发生器实例 151
10.1.2 Blum-Blum-ShubPRNG 152
10.1.3 Tiny PRNG 153
10.1.4 对PRNG的攻击 153
10.1.5 在网络赌博游戏中作弊 153
10.1.6 PRNG的统计测试 155
10.2 熵的收集和估计 155
10.2.1 硬件解决方案 156
10.2.2 软件解决方案 158
10.2.3 糟糕的熵收集示例 163
10.3 处理熵 164
10.4 实用的随机数据来源 166
10.4.1 Tiny 166
10.4.2 Windows的随机数据 167
10.4.3 Linux的随机数 167
10.4.4 Java中的随机数 169
10.5 结论 171
第11章 密码学的应用 172
11.1 一般性建议 172
11.1.1 开发者并不是密码专家 173
11.1.2 数据完整性 174
11.1.3 密码出口的有关法律 174
11.2 常用密码库 175
11.2.1 Cryptlib 175
11.2.2 OpenSSL 176
11.2.3 Crypto++ 177
11.2.4 BSAFE 178
11.2.5 Cryptix 179
11.3 利用密码学编程 180
11.3.1 加密 180
11.3.2 散列算法 184
11.3.3 公共密钥加密 185
11.3.4 多线程 189
11.3.5 cookie加密 189
11.4 加密散列更多的应用 191
11.5 SSL和TLS 192
11.6 Stunnel 194
11.7 一次一密 195
11.8 结论 198
第12章 信任管理和输入验证 199
12.1 关于信任 200
12.2 不恰当信任的例子 201
12.2.1 信任是传递的 201
12.2.2 预防恶意的调用者 204
12.2.3 安全地调用其他程序 208
12.2.4 源自Web的问题 210
12.2.5 客户端安全 212
12.2.6 Perl问题 214
12.2.7 格式字符串攻击 215
12.3 自动检测输入问题 216
12.4结论 219
第13章 口令认证 220
13.1?口令存储 220
13.2?向口令数据库中添加用户 222
13.3?口令认证的方式 231
13.4?口令选择 235
13.4.1?更多的建议 236
13.4.2?掷骰子 237
13.4.3?口令短语 240
13.4.4?应用程序选择的口令 241
13.5?一次性口令 242
13.6?结论 252
第14章 数据库安全 253
14.1?基础知识 253
14.2?访问控制 254
14.3?在访问控制中使用视图 256
14.4?字段保护 257
14.5?针对统计攻击的安全防卫 260
14.6?结论 263
第15章 客户端安全 264
15.1?版权保护方案 266
15.1.1?许可证文件 273
15.1.2?防范偶然性盗版 274
15.1.3?其他的许可证特性 275
15.1.4?其他的版权保护方案 275
15.1.5?对不可信客户端的身份认证 276
15.2?防篡改 277
15.2.1?反调试措施 277
15.2.2?校验和 279
15.2.3?应对滥用 279
15.2.4?诱饵 280
15.3?代码混淆 280
15.3.1?基本的代码混淆技术 281
15.3.2?加密部分程序 282
15.4?结论 284
第16章 穿越防火墙 285
16.1?基本策略 285
16.2?客户端代理 287
16.3?服务器代理 288
16.4?SOCKS 289
16.5?对等网络 290
16.6?结论 292
附录A 密码学基础 293
参考文献 310
页码(选填)
这本书已经添加了这些章节,请勾选或者新建你的书摘所属的章节
add
up
down
remove
译者序
对本书的赞誉
序
前言
致谢
第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 审计源代码 79
6.2.2 源码级的安全审计工具 80
6.2.3 在分析中使用RATS 81
6.2.4 安全扫描软件的有效性 82
6.3 结论 83
第7章 缓冲区溢出 84
7.1 什么是缓冲区溢出 86
7.2 为什么缓冲溢出是安全问题 87
7.3 缓冲区溢出的防御 89
7.4 主要的陷阱 89
7.5 内部缓冲区溢出 93
7.6 更多的输入溢出 93
7.7 其他风险 94
7.8 帮助工具 94
7.9 堆破坏和栈破坏 96
7.10 堆溢出 98
7.11 栈溢出 101
7.11.1 破译堆栈 101
7.11.2 陷入无限循环……并更糟 105
7.12 代码攻击 113
7.12.1 UNIX漏洞利用 114
7.12.2 关于Windows 119
7.13 结论 119
第8章 访问控制 120
8.1 UNIX访问控制模型 120
8.1.1 UNIX权限工作原理 121
8.1.2 修改文件属性 122
8.1.3 修改文件的所有权 124
8.1.4 umask命令 125
8.1.5 编程接口 125
8.1.6 Setuid编程 127
8.2 Windows NT的访问控制 130
8.3 分割 132
8.4 细粒度权限 134
8.5 结论 134
第9章 竞争条件 135
9.1 什么是竞争条件 135
9.2 检查时间与使用时间 138
9.2.1 攻破passwd 139
9.2.2 避免 TOCTOU 问题 142
9.3 安全的文件访问 143
9.4 临时文件 146
9.5 文件锁定 146
9.6 其他竞争条件 147
9.7 结论 148
第10章 随机性和确定性 149
10.1 伪随机数发生器 149
10.1.1 伪随机数发生器实例 151
10.1.2 Blum-Blum-ShubPRNG 152
10.1.3 Tiny PRNG 153
10.1.4 对PRNG的攻击 153
10.1.5 在网络赌博游戏中作弊 153
10.1.6 PRNG的统计测试 155
10.2 熵的收集和估计 155
10.2.1 硬件解决方案 156
10.2.2 软件解决方案 158
10.2.3 糟糕的熵收集示例 163
10.3 处理熵 164
10.4 实用的随机数据来源 166
10.4.1 Tiny 166
10.4.2 Windows的随机数据 167
10.4.3 Linux的随机数 167
10.4.4 Java中的随机数 169
10.5 结论 171
第11章 密码学的应用 172
11.1 一般性建议 172
11.1.1 开发者并不是密码专家 173
11.1.2 数据完整性 174
11.1.3 密码出口的有关法律 174
11.2 常用密码库 175
11.2.1 Cryptlib 175
11.2.2 OpenSSL 176
11.2.3 Crypto++ 177
11.2.4 BSAFE 178
11.2.5 Cryptix 179
11.3 利用密码学编程 180
11.3.1 加密 180
11.3.2 散列算法 184
11.3.3 公共密钥加密 185
11.3.4 多线程 189
11.3.5 cookie加密 189
11.4 加密散列更多的应用 191
11.5 SSL和TLS 192
11.6 Stunnel 194
11.7 一次一密 195
11.8 结论 198
第12章 信任管理和输入验证 199
12.1 关于信任 200
12.2 不恰当信任的例子 201
12.2.1 信任是传递的 201
12.2.2 预防恶意的调用者 204
12.2.3 安全地调用其他程序 208
12.2.4 源自Web的问题 210
12.2.5 客户端安全 212
12.2.6 Perl问题 214
12.2.7 格式字符串攻击 215
12.3 自动检测输入问题 216
12.4结论 219
第13章 口令认证 220
13.1?口令存储 220
13.2?向口令数据库中添加用户 222
13.3?口令认证的方式 231
13.4?口令选择 235
13.4.1?更多的建议 236
13.4.2?掷骰子 237
13.4.3?口令短语 240
13.4.4?应用程序选择的口令 241
13.5?一次性口令 242
13.6?结论 252
第14章 数据库安全 253
14.1?基础知识 253
14.2?访问控制 254
14.3?在访问控制中使用视图 256
14.4?字段保护 257
14.5?针对统计攻击的安全防卫 260
14.6?结论 263
第15章 客户端安全 264
15.1?版权保护方案 266
15.1.1?许可证文件 273
15.1.2?防范偶然性盗版 274
15.1.3?其他的许可证特性 275
15.1.4?其他的版权保护方案 275
15.1.5?对不可信客户端的身份认证 276
15.2?防篡改 277
15.2.1?反调试措施 277
15.2.2?校验和 279
15.2.3?应对滥用 279
15.2.4?诱饵 280
15.3?代码混淆 280
15.3.1?基本的代码混淆技术 281
15.3.2?加密部分程序 282
15.4?结论 284
第16章 穿越防火墙 285
16.1?基本策略 285
16.2?客户端代理 287
16.3?服务器代理 288
16.4?SOCKS 289
16.5?对等网络 290
16.6?结论 292
附录A 密码学基础 293
参考文献 310
×
添加一个书摘本
搜索创建书摘本
搜索
正在搜索...
不对,换一下
书名
作者
出版社
备注
ISBN
*
*
译者序
对本书的赞誉
序
前言
致谢
第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 审计源代码 79
6.2.2 源码级的安全审计工具 80
6.2.3 在分析中使用RATS 81
6.2.4 安全扫描软件的有效性 82
6.3 结论 83
第7章 缓冲区溢出 84
7.1 什么是缓冲区溢出 86
7.2 为什么缓冲溢出是安全问题 87
7.3 缓冲区溢出的防御 89
7.4 主要的陷阱 89
7.5 内部缓冲区溢出 93
7.6 更多的输入溢出 93
7.7 其他风险 94
7.8 帮助工具 94
7.9 堆破坏和栈破坏 96
7.10 堆溢出 98
7.11 栈溢出 101
7.11.1 破译堆栈 101
7.11.2 陷入无限循环……并更糟 105
7.12 代码攻击 113
7.12.1 UNIX漏洞利用 114
7.12.2 关于Windows 119
7.13 结论 119
第8章 访问控制 120
8.1 UNIX访问控制模型 120
8.1.1 UNIX权限工作原理 121
8.1.2 修改文件属性 122
8.1.3 修改文件的所有权 124
8.1.4 umask命令 125
8.1.5 编程接口 125
8.1.6 Setuid编程 127
8.2 Windows NT的访问控制 130
8.3 分割 132
8.4 细粒度权限 134
8.5 结论 134
第9章 竞争条件 135
9.1 什么是竞争条件 135
9.2 检查时间与使用时间 138
9.2.1 攻破passwd 139
9.2.2 避免 TOCTOU 问题 142
9.3 安全的文件访问 143
9.4 临时文件 146
9.5 文件锁定 146
9.6 其他竞争条件 147
9.7 结论 148
第10章 随机性和确定性 149
10.1 伪随机数发生器 149
10.1.1 伪随机数发生器实例 151
10.1.2 Blum-Blum-ShubPRNG 152
10.1.3 Tiny PRNG 153
10.1.4 对PRNG的攻击 153
10.1.5 在网络赌博游戏中作弊 153
10.1.6 PRNG的统计测试 155
10.2 熵的收集和估计 155
10.2.1 硬件解决方案 156
10.2.2 软件解决方案 158
10.2.3 糟糕的熵收集示例 163
10.3 处理熵 164
10.4 实用的随机数据来源 166
10.4.1 Tiny 166
10.4.2 Windows的随机数据 167
10.4.3 Linux的随机数 167
10.4.4 Java中的随机数 169
10.5 结论 171
第11章 密码学的应用 172
11.1 一般性建议 172
11.1.1 开发者并不是密码专家 173
11.1.2 数据完整性 174
11.1.3 密码出口的有关法律 174
11.2 常用密码库 175
11.2.1 Cryptlib 175
11.2.2 OpenSSL 176
11.2.3 Crypto++ 177
11.2.4 BSAFE 178
11.2.5 Cryptix 179
11.3 利用密码学编程 180
11.3.1 加密 180
11.3.2 散列算法 184
11.3.3 公共密钥加密 185
11.3.4 多线程 189
11.3.5 cookie加密 189
11.4 加密散列更多的应用 191
11.5 SSL和TLS 192
11.6 Stunnel 194
11.7 一次一密 195
11.8 结论 198
第12章 信任管理和输入验证 199
12.1 关于信任 200
12.2 不恰当信任的例子 201
12.2.1 信任是传递的 201
12.2.2 预防恶意的调用者 204
12.2.3 安全地调用其他程序 208
12.2.4 源自Web的问题 210
12.2.5 客户端安全 212
12.2.6 Perl问题 214
12.2.7 格式字符串攻击 215
12.3 自动检测输入问题 216
12.4结论 219
第13章 口令认证 220
13.1?口令存储 220
13.2?向口令数据库中添加用户 222
13.3?口令认证的方式 231
13.4?口令选择 235
13.4.1?更多的建议 236
13.4.2?掷骰子 237
13.4.3?口令短语 240
13.4.4?应用程序选择的口令 241
13.5?一次性口令 242
13.6?结论 252
第14章 数据库安全 253
14.1?基础知识 253
14.2?访问控制 254
14.3?在访问控制中使用视图 256
14.4?字段保护 257
14.5?针对统计攻击的安全防卫 260
14.6?结论 263
第15章 客户端安全 264
15.1?版权保护方案 266
15.1.1?许可证文件 273
15.1.2?防范偶然性盗版 274
15.1.3?其他的许可证特性 275
15.1.4?其他的版权保护方案 275
15.1.5?对不可信客户端的身份认证 276
15.2?防篡改 277
15.2.1?反调试措施 277
15.2.2?校验和 279
15.2.3?应对滥用 279
15.2.4?诱饵 280
15.3?代码混淆 280
15.3.1?基本的代码混淆技术 281
15.3.2?加密部分程序 282
15.4?结论 284
第16章 穿越防火墙 285
16.1?基本策略 285
16.2?客户端代理 287
16.3?服务器代理 288
16.4?SOCKS 289
16.5?对等网络 290
16.6?结论 292
附录A 密码学基础 293
参考文献 310