《C和C++安全编码》电子书下载

C和C++安全编码txt,chm,pdf,epub,mobi下载
作者: Robert C. Seacord
出版社: 机械工业出版社
原作名: Secure Coding in C and C++
译者: 卢涛
出版年: 2013-12-24
页数: 377
定价: 79.00
丛书: 华章程序员书库
ISBN: 9787111442790

内容简介  · · · · · ·

塞克德所著的《C和C++安全编码(原书第2版)》是C/C++安全编码领域的权威著作,被视为“标准”参考书,由国际资深软件安全专家撰写,美国CERT主管亲自作序推荐。本书结合国际标准C11和C++11,以及C和C++语言的最新发展,既详细阐述了C/C++语言及其相关库固有的安全问题和陷阱,系统总结了导致软件漏洞的各种常见编码错误,并给出了应对错误的解决方案;又对C/C++软件中常见漏洞的危害、被利用方式、检测方法和应对之道进行了全方位讲解,包含大量编码练习,实践性强。

《C和C++安全编码(原书第2版)》从C和C++语言的各个部分分别介绍了可能导致安全问题的软件漏洞:第1章介绍安全术语和概念,并指出为何C和C++程序中存在如此多的漏洞。第2章描述C和C++中的字符串操作、常见的安全缺陷以及由此导致的漏洞。第3章介绍任意内存写漏洞利用方式,它允许攻击者对...




目录  · · · · · ·

译者序

前言
致谢
第1章 夹缝求生 1
1.1 衡量危险 4
· · · · · · ()
译者序

前言
致谢
第1章 夹缝求生 1
1.1 衡量危险 4
1.1.1 损失的现状 4
1.1.2 威胁的来源 6
1.1.3 软件安全 7
1.2 安全概念 8
1.2.1 安全策略 9
1.2.2 安全缺陷 10
1.2.3 漏洞 10
1.2.4 漏洞利用 11
1.2.5 缓解措施 12
1.3 C和C++ 12
1.3.1 C和C++简史 13
1.3.2 C存在的问题 14
1.3.3 遗留代码 17
1.3.4 其他语言 17
1.4 开发平台 17
1.4.1 操作系统 18
1.4.2 编译器 18
1.5 小结 18
1.6 阅读材料 19
第2章 字符串 20
2.1 字符串 20
2.1.1 字符串数据类型 20
2.1.2 UTF-8 22
2.1.3 宽字符串 23
2.1.4 字符串字面值 23
2.1.5 C++中的字符串 25
2.1.6 字符类型 26
2.1.7 计算字符串大小 27
2.2 常见的字符串操作错误 29
2.2.1 无界字符串复制 29
2.2.2 差一错误 32
2.2.3 空字符结尾错误 33
2.2.4 字符串截断 34
2.2.5 与函数无关的字符串错误 34
2.3 字符串漏洞及其利用 35
2.3.1 被污染的数据 35
2.3.2 IsPasswordOK()的安全缺陷 36
2.3.3 缓冲区溢出 37
2.3.4 进程内存组织 37
2.3.5 栈管理 38
2.3.6 栈溢出 40
2.3.7 代码注入 44
2.3.8 弧注入 47
2.3.9 返回导向编程 48
2.4 字符串漏洞缓解策略 49
2.4.1 字符串处理 49
2.4.2 C11附录K边界检查接口 50
2.4.3 动态分配函数 52
2.4.4 C++ std::basic_string 54
2.4.5 使字符串对象的引用失效 55
2.4.6 使用basic_string的其他常见错误 57
2.5 字符串处理函数 57
2.5.1 gets() 57
2.5.2 C99 57
2.5.3 C11附录K边界检查接口:gets_s() 59
2.5.4 动态分配函数 60
2.5.5 strcpy()和strcat() 61
2.5.6 C99 61
2.5.7 strncpy()和strncat() 64
2.5.8 memcpy()和memmove() 68
2.5.9 strlen() 68
2.6 运行时保护策略 69
2.6.1 检测和恢复 69
2.6.2 输入验证 70
2.6.3 对象大小检查 70
2.6.4 Visual Studio中编译器生成的运行时检查 73
2.6.5 栈探测仪 74
2.6.6 栈溢出保护器 75
2.6.7 操作系统策略 76
2.6.8 检测和恢复 76
2.6.9 不可执行栈 77
2.6.10 W^X 77
2.6.11 PaX 79
2.6.12 未来发展方向 79
2.7 著名的漏洞 80
2.7.1 远程登录 80
2.7.2 Kerberos 81
2.8 小结 81
2.9 阅读材料 82
第3章 指针诡计 83
3.1 数据位置 83
3.2 函数指针 84
3.3 对象指针 85
3.4 修改指令指针 86
3.5 全局偏移表 87
3.6 .dtors区 89
3.7 虚指针 90
3.8 atexit()和on_exit()函数 91
3.9 longjmp()函数 93
3.10 异常处理 94
3.10.1 结构化异常处理 94
3.10.2 系统默认异常处理 96
3.11 缓解策略 96
3.11.1 栈探测仪 96
3.11.2 W^X 97
3.11.3 对函数指针编码和解码 97
3.12 小结 98
3.13 阅读材料 98
第4章 动态内存管理 99
4.1 C内存管理 100
4.1.1 C标准内存管理函数 100
4.1.2 对齐 101
4.1.3 alloca()和变长数组 102
4.2 常见的C内存管理错误 103
4.2.1 初始化错误 103
4.2.2 未检查返回值 104
4.2.3 Null或无效指针解引用 106
4.2.4 引用已释放内存 106
4.2.5 多次释放内存 107
4.2.6 内存泄漏 108
4.2.7 零长度分配 108
4.2.8 DR # 400 110
4.3 C++的动态内存管理 110
4.3.1 分配函数 111
4.3.2 释放函数 115
4.3.3 垃圾回收 115
4.4 常见的C++内存管理错误 117
4.4.1 未能正确检查分配失败 117
4.4.2 不正确配对的内存管理函数 118
4.4.3 多次释放内存 120
4.4.4 释放函数抛出一个异常 123
4.5 内存管理器 123
4.6 Doug Lea的内存分配器 124
4.7 双重释放漏洞 131
4.7.1 写入已释放的内存 134
4.7.2 RtlHeap 135
4.7.3 缓冲区溢出(终极版) 140
4.8 缓解策略 146
4.8.1 空指针 146
4.8.2 一致的内存管理约定 146
4.8.3 phkmalloc 147
4.8.4 随机化 148
4.8.5 OpenBSD 148
4.8.6 jemalloc内存管理器 149
4.8.7 静态分析 149
4.8.8 运行时分析工具 150
4.9 值得注意的漏洞 153
4.9.1 CVS缓冲区溢出漏洞 153
4.9.2 Microsoft数据访问组件 153
4.9.3 CVS服务器双重释放漏洞 154
4.9.4 MIT Kerberos 5中的漏洞 154
4.10 小结 154
第5章 整数安全 155
5.1 整数安全导论 155
5.2 整数数据类型 156
5.2.1 无符号整数类型 156
5.2.2 回绕 157
5.2.3 有符号整数类型 159
5.2.4 有符号整数的取值范围 162
5.2.5 整数溢出 163
5.2.6 字符类型 165
5.2.7 数据模型 165
5.2.8 其他整数类型 166
5.3 整数转换 169
5.3.1 转换整数 169
5.3.2 整数转换级别 169
5.3.3 整数类型提升 170
5.3.4 普通算术转换 171
5.3.5 由无符号整数类型转换 171
5.3.6 由有符号整数类型转换 173
5.3.7 转换的影响 176
5.4 整数操作 176
5.4.1 赋值 177
5.4.2 加法 179
5.4.3 减法 183
5.4.4 乘法 185
5.4.5 除法和求余 188
5.4.6 移位 192
5.5 整数漏洞 194
5.5.1 漏洞 194
5.5.2 回绕 194
5.5.3 转换和截断错误 196
5.5.4 非异常的整数逻辑错误 197
5.6 缓解策略 198
5.6.1 整数类型的选择 198
5.6.2 抽象数据类型 200
5.6.3 任意精度算术 200
5.6.4 范围检查 201
5.6.5 前提条件和后验条件测试 203
5.6.6 安全整数库 204
5.6.7 溢出检测 205
5.6.8 编译器生成的运行时检查 206
5.6.9 可验证范围操作 207
5.6.10 仿佛无限范围整数模型 208
5.6.11 测试与分析 208
5.7 小结 210
第6章 格式化输出 211
6.1 变参函数 212
6.2 格式化输出函数 214
6.2.1 格式字符串 215
6.2.2 GCC 216
6.2.3 Visual C++ 217
6.3 对格式化输出函数的漏洞利用 217
6.3.1 缓冲区溢出 218
6.3.2 输出流 219
6.3.3 使程序崩溃 219
6.3.4 查看栈内容 219
6.3.5 查看内存内容 221
6.3.6 覆写内存 222
6.3.7 国际化 226
6.3.8 宽字符格式字符串漏洞 226
6.4 栈随机化 226
6.4.1 阻碍栈随机化 227
6.4.2 以双字的格式写地址 227
6.4.3 直接参数访问 228
6.5 缓解策略 230
6.5.1 排除用户输入的格式字符串 230
6.5.2 静态内容的动态使用 230
6.5.3 限制字节写入 231
6.5.4 C11附录K边界检查接口 232
6.5.5 iostream与stdio 233
6.5.6 测试 234
6.5.7 编译器检查 234
6.5.8 静态污点分析 234
6.5.9 调整变参函数的实现 235
6.5.10 Exec Shield 236
6.5.11 FormatGuard 236
6.5.12 静态二进制分析 237
6.6 著名的漏洞 238
6.6.1 华盛顿大学FTP Daemon 238
6.6.2 CDE ToolTalk 238
6.6.3 Ettercap NG-0.7.2版 238
6.7 小结 239
6.8 阅读材料 240
第7章 并发 241
7.1 多线程 241
7.2 并行 242
7.2.1 数据并行 243
7.2.2 任务并行 245
7.3 性能目标 245
7.4 常见错误 247
7.4.1 竞争条件 247
7.4.2 损坏的值 248
7.4.3 易变的对象 249
7.5 缓解策略 250
7.5.1 内存模型 251
7.5.2 同步原语 253
7.5.3 线程角色分析(研究) 259
7.5.4 不可变的数据结构 260
7.5.5 并发代码属性 261
7.6 缓解陷阱 261
7.6.1 死锁 262
7.6.2 过早释放锁 266
7.6.3 争用 267
7.6.4 ABA问题 268
7.7 值得注意的漏洞 272
7.7.1 在多核动态随机访问存储器系统中的DoS攻击 272
7.7.2 系统调用包装器中的并发漏洞 272
7.8 小结 273
第8章 文件I/O 275
8.1 文件I/O基础 275
8.1.1 文件系统 275
8.1.2 特殊文件 277
8.2 文件I/O接口 278
8.2.1 数据流 278
8.2.2 打开和关闭文件 279
8.2.3 POSIX 280
8.2.4 C++中的文件I/O 281
8.3 访问控制 282
8.3.1 UNIX文件权限 282
8.3.2 进程特权 284
8.3.3 更改特权 285
8.3.4 管理特权 288
8.3.5 管理权限 292
8.4 文件鉴定 295
8.4.1 目录遍历 295
8.4.2 等价错误 297
8.4.3 符号链接 298
8.4.4 规范化 300
8.4.5 硬链接 302
8.4.6 设备文件 304
8.4.7 文件属性 306
8.5 竞争条件 308
8.5.1 检查时间和使用时间 308
8.5.2 创建而不替换 309
8.5.3 独占访问 312
8.5.4 共享目录 313
8.6 缓解策略 315
8.6.1 关闭竞争窗口 315
8.6.2 消除竞争对象 319
8.6.3 控制对竞争对象的访问 320
8.6.4 竞争检测工具 322
8.7 小结 322
第9章 推荐的实践 324
9.1 安全开发生命周期 324
9.1.1 TSP-Secure 326
9.1.2 计划和跟踪 327
9.1.3 质量管理 328
9.2 安全培训 329
9.3 要求 330
9.3.1 安全编码标准 330
9.3.2 安全质量需求工程 330
9.3.3 用例/误用例 332
9.4 设计 333
9.4.1 安全的软件开发原则 334
9.4.2 威胁建模 337
9.4.3 分析攻击面 338
9.4.4 现有代码中的漏洞 338
9.4.5 安全包装器 339
9.4.6 输入验证 339
9.4.7 信任边界 340
9.4.8 黑名单 342
9.4.9 白名单 343
9.4.10 测试 343
9.5 实现 344
9.5.1 编译器检查 344
9.5.2 仿佛无限范围整数模型 345
9.5.3 有安全保证的C/C++ 345
9.5.4 静态分析 346
9.5.5 源代码分析实验室 348
9.5.6 深层防御 349
9.6 验证 350
9.6.1 静态分析 350
9.6.2 渗透测试 350
9.6.3 模糊测试 351
9.6.4 代码审计 352
9.6.5 开发人员准则与检查清单 352
9.6.6 独立安全审查 353
9.6.7 攻击面回顾 353
9.7 小结 354
9.8 阅读材料 354
参考文献 355
缩略语 373
· · · · · · ()

下载地址

发布者:大适蒲蒲

文件说明:zip / 解压密码:yiquhai.com

迅雷下载:您需要先后,才能查看

网盘下载:您需要先后,才能查看

关于内容:内容自于互联网,如果发现有违规内容请联系管理员删除!

作者: 大适蒲蒲

该用户很懒,还没有介绍自己。

17 条评论

发表评论

  1. 逆龙拔天羞 逆龙拔天羞说道:
    1#

    力荐

  2. 李埼玉 李埼玉说道:
    2#

    一直在追

  3. 最爱我家路宝喷 最爱我家路宝喷说道:
    3#

    后来理论的东西很多

  4. 间瓦 间瓦说道:
    4#

    太烧脑,阶层是可怕的存在

  5. 显示更多