安全编程:代码静态分析PDF电子书下载
- 电子书积分:13 积分如何计算积分?
- 作 者:(美)BrianChess,JacobWest著
- 出 版 社:北京:机械工业出版社
- 出版年份:2008
- ISBN:9787111233213
- 页数:362 页
第一部分 软件安全和静态分析第1章 软件安全问题 1
1.1 仅有防御性编程还不够 1
1.2 安全功能≠安全的功能 3
1.3 质量的误区 4
1.4 软件开发全局中的静态分析 6
1.5 漏洞分类 7
1.5.1 7种有害的领域 9
1.5.2 “7种有害的领域”与“OWASP前10名” 11
1.6 小结 11
第2章 静态分析简介 12
2.1 静态分析的能力和局限性 12
2.2 通过静态分析解决问题 13
2.2.1 类型检查 14
2.2.2 风格检查 15
2.2.3 程序理解 16
2.2.4 程序验证和属性检查 17
2.2.5 Bug查找 19
2.2.6 安全审查 20
2.3 一点理论,一点实际 21
2.3.1 成功准则 22
2.3.2 分析源代码与分析编译后的代码 25
2.4 小结 28
第3章 作为代码审查过程组成部分的静态分析 29
3.1 执行代码审查 29
3.1.1 代码审查周期 30
3.1.2 避开可利用性陷阱 33
3.2 将安全审查加入到现有的开发过程中 34
3.2.1 采用工具的疑虑 36
3.2.2 小处着手,循序渐进 38
3.3 静态分析度量标准 39
3.4 小结 44
第4章 静态分析技术内幕 45
4.1 建模 45
4.1.1 词法分析 46
4.1.2 解析 46
4.1.3 抽象语法 47
4.1.4 语义分析 48
4.1.5 跟踪控制流 49
4.1.6 跟踪数据流 51
4.1.7 污染传播 52
4.1.8 指针别名歧义 52
4.2 分析算法 53
4.2.1 断言检查 53
4.2.2 单纯本地分析 54
4.2.3 本地分析方法 57
4.2.4 全局分析 58
4.2.5 研究性的工具 60
4.3 规则 62
4.3.1 规则格式 62
4.3.2 用于污染传播的规则 65
4.3.3 本书中讨论的规则 67
4.4 报告结果 67
4.4.1 结果的分组和分类 69
4.4.2 消除非预期的结果 69
4.4.3 解释结果的意义 70
4.5 小结 73
第二部分 常见问题 75
第5章 处理输入 75
5.1 验证内容 76
5.1.1 验证所有输入 77
5.1.2 验证各种来源的输入 77
5.1.3 建立可信边界 83
5.2 如何进行验证 85
5.2.1 使用强输入验证 85
5.2.2 避免黑名单法 89
5.2.3 不要混淆可用性和安全性 91
5.2.4 拒绝不良数据 92
5.2.5 默认执行正确的输入验证 93
5.2.6 检验输入的长度 100
5.2.7 限制数值输入 102
5.3 防止元字符攻击 104
5.3.1 使用参数化请求 105
5.3.2 路径操纵 108
5.3.3 命令注入 109
5.3.4 日志欺骗 110
5.4 小结 112
第6章 缓冲区溢出 113
6.1 缓冲区溢出简介 113
6.1.1 利用缓冲区溢出漏洞 114
6.1.2 缓冲区分配策略 116
6.1.3 跟踪缓冲区大小 120
6.2 字符串 122
6.2.1 天生危险的函数 122
6.2.2 有界字符串操作 127
6.2.3 有界函数的常见缺陷 132
6.2.4 保留Null终止符 138
6.2.5 字符集、表达式和编码 141
6.2.6 格式串 145
6.2.7 更完善的字符串类和类库 148
6.3 小结 151
第7章 缓冲区溢出伴随的问题 152
7.1 整数 152
7.1.1 回绕错误 153
7.1.2 截断和符号位扩展 154
7.1.3 有符号数和无符号数之间的转换 156
7.1.4 检测和防止整数溢出的方法 157
7.2 运行时保护 162
7.2.1 更安全的编程语言 162
7.2.2 更安全的C语言 164
7.2.3 动态缓冲区溢出保护 166
7.2.4 动态保护基准结果 169
7.3 小结 170
第8章 错误和异常 171
8.1 利用返回代码处理错误 171
8.1.1 检查C语言中的返回值 172
8.1.2 检查Java中的返回值 173
8.2 管理异常 174
8.2.1 捕获顶层的任何东西 175
8.2.2 消失的异常 176
8.2.3 只捕获需要处理的异常 177
8.2.4 控制已检测的异常 178
8.3 防止资源泄露 180
8.3.1 C和C++ 180
8.3.2 Java 183
8.4 日志记录和调试 185
8.4.1 集中日志记录 185
8.4.2 在最终代码中不包含调试帮助和“后门”访问代码 187
8.4.3 清除备份文件 189
8.4.4 不要容忍“复活节彩蛋” 190
8.5 小结 190
第三部分 特性与特色 191
第9章 Web应用程序 191
9.1 用于Web的输入和输出验证 192
9.1.1 预料到浏览器已遭到破坏 192
9.1.2 认为浏览器是一种一览无余的事物 194
9.1.3 保护浏览器免受恶意内容的攻击 195
9.2 HTTP考虑 205
9.2.1 使用POST,而不是GET 205
9.2.2 请求顺序 207
9.2.3 错误处理 208
9.2.4 请求出处 210
9.3 维护会话状态 211
9.3.1 使用强用户会话标识符 212
9.3.2 强制会话空闲超时和最大会话持续时间 213
9.3.3 在认证的基础上开始一个新的会话 215
9.4 为输入验证使用Struts架构 216
9.4.1 建立Struts Validator 217
9.4.2 对所有操作使用Struts Validator 218
9.4.3 验证每一个参数 220
9.4.4 维护验证逻辑 221
9.5 小结 223
第10章 XML与Web服务 224
10.1 使用XML 224
10.1.1 使用一个标准兼容的XML语法分析程序 225
10.1.2 开启验证 226
10.1.3 要小心外部引用 229
10.1.4 保持对文档查询的控制 232
10.2 使用Web服务 235
10.2.1 输入验证 235
10.2.2 WSDL苦恼 236
10.2.3 过度暴露 237
10.2.4 过去错误的新机会 238
10.2.5 JavaScript劫持:一种新的边界 238
10.3 小结 242
第11章 隐私与秘密 243
11.1 隐私与规则 243
11.1.1 识别私有信息 243
11.1.2 处理私有信息 245
11.2 外发密码 249
11.2.1 源代码中不能有密码 249
11.2.2 不存储明文密码 251
11.3 随机数 255
11.3.1 在Java中生成随机数 255
11.3.2 在C和C++中生成随机数 257
11.4 密码技术 261
11.4.1 选择一个好的算法 261
11.4.2 不要自以为是 262
11.5 内存中的秘密 264
11.5.1 使保持秘密的时间最短 265
11.5.2 保守地共享秘密 266
11.5.3 安全地删除秘密 267
11.5.4 防止不必要地复制秘密 268
11.6 小结 269
第12章 具有特权的程序 270
12.1 特权的含义 271
12.1.1 最小特权原理 271
12.1.2 这次我是认真的:不相信每一件事 273
12.2 管理特权 274
12.2.1 在实践中应用最小特权 274
12.2.2 限制文件系统上的特权 277
12.2.3 谨防非期待的事件 279
12.3 特权提升攻击 281
12.3.1 文件访问竞态条件 282
12.3.2 不安全的临时文件 287
12.3.3 命令注入 289
12.3.4 标准文件描述符 290
12.4 小结 291
第四部分 静态分析实践第13章 Java语言源代码分析练习 293
练习13.0 安装 293
练习13.1 留意结果,现在开始 294
练习13.2 人工审计源代码 300
练习13.3 运行Fortify SCA 302
练习13.4 理解原始的分析结果 303
练习13.5 分析一个完整的应用程序 307
练习13.6 使用Audit Workbench调整结果 308
练习13.7 审计一个问题 310
练习13.8 执行一个完整的审计 313
练习13.9 编写自定义规则 316
练习13.2中问题的答案 321
第14章 C语言源代码分析练习 324
练习14.0 安装 325
练习14.1 留意结果,现在开始 325
练习14.2 人工审计源代码 330
练习14.3 运行Fortify SCA 331
练习14.4 理解原始的分析结果 332
练习14.5 分析一个完整的应用程序 335
练习14.6 使用Audit Workbench调整结果 335
练习14.7 审计一个问题 338
练习14.8 执行一个完整的审计 341
练习14.9 编写自定义规则 342
练习14.2中的问题答案 346
结束语 349
参考文献 351
- 《水面舰艇编队作战运筹分析》谭安胜著 2009
- 《分析化学》陈怀侠主编 2019
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《影响葡萄和葡萄酒中酚类特征的因素分析》朱磊 2019
- 《仪器分析技术 第2版》曹国庆 2018
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《全国普通高等中医药院校药学类专业十三五规划教材 第二轮规划教材 分析化学实验 第2版》池玉梅 2018
- 《Power BI数据清洗与可视化交互式分析》陈剑 2020
- 《行测资料分析》李永新主编 2019
- 《药物分析》贡济宇主编 2017
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019