《华章程序员书库:C和C++安全编码(原书第2版)》致力于解决C和C++中已经导致危险的、破坏性的常见软件漏洞的基本编程错误,这些漏洞自CERT 1988年创立以来就记录在案。针对导致这些漏洞的编程错误,《华章程序员书库:C和C++安全编码(原书第2版)》既出色地给出了深度工程分析,又提出了缓解策略,可以富有成效地降低或消除漏洞被恶意利用的风险。

百度云及其他网盘下载地址:点我

编辑推荐

《华章程序员书库:C和C++安全编码(原书第2版)》介绍了Windows和Linux上数以百计的例子,包括安全的代码、不安全的代码和利用方法。如果你负责创建安全的C或C++软件,或者需要保证它们的安全,《华章程序员书库:C和C++安全编码(原书第2版)》将为你提供详尽的专家级援助。

作者简介

作者:(美国)塞克德(Robert C.Seacord) 译者:卢涛

目录

译者序 
序 
前言 
致谢 
第1章 夹缝求生 
1.1 衡量危险 
1.1.1 损失的现状 
1.1.2 威胁的来源 
1.1.3 软件安全 
1.2 安全概念 
1.2.1 安全策略 
1.2.2 安全缺陷 
1.2.3 漏洞 
1.2.4 漏洞利用 
1.2.5 缓解措施 
1.3 C和C++ 
1.3.1 C和C++简史 
1.3.2 C存在的问题 
1.3.3 遗留代码 
1.3.4 其他语言 
1.4 开发平台 
1.4.1 操作系统 
1.4.2 编译器 
1.5 小结 
1.6 阅读材料 
第2章 字符串 
2.1 字符串 
2.1.1 字符串数据类型 
2.1.2 UTF—8 
2.1.3 宽字符串 
2.1.4 字符串字面值 
2.1.5 C++中的字符串 
2.1.6 字符类型 
2.1.7 计算字符串大小 
2.2 常见的字符串操作错误 
2.2.1 无界字符串复制 
2.2.2 差一错误 
2.2.3 空字符结尾错误 
2.2.4 字符串截断 
2.2.5 与函数无关的字符串错误 
2.3 字符串漏洞及其利用 
2.3.1 被污染的数据 
2.3.2 IsPasswordOK的安全缺陷 
2.3.3 缓冲区溢出 
2.3.4 进程内存组织 
2.3.5 栈管理 
2.3.6 栈溢出 
2.3.7 代码注入 
2.3.8 弧注入 
2.3.9 返回导向编程 
2.4 字符串漏洞缓解策略 
2.4.1 字符串处理 
2.4.2 C11附录K边界检查接口 
2.4.3 动态分配函数 
2.4.4 C++ std::basic_string 
2.4.5 使字符串对象的引用失效 
2.4.6 使用basic_string的其他常见错误 
2.5 字符串处理函数 
2.5.1 gets 
2.5.2 C99 
2.5.3 C11附录K边界检查接口:gets—s 
2.5.4 动态分配函数 
2.5.5 strcpy和strcat 
2.5.6 C99 
2.5.7 strncpy和strncat 
2.5.8 memcpy和memmove 
2.5.9 strlen 
2.6 运行时保护策略 
2.6.1 检测和恢复 
2.6.2 输入验证 
2.6.3 对象大小检查 
2.6.4 Visual Studio中编译器生成的运行时检查 
2.6.5 栈探测仪 
2.6.6 栈溢出保护器 
2.6.7 操作系统策略 
2.6.8 检测和恢复 
2.6.9 不可执行栈 
2.6.10 W^X 
2.6.11 PaX 
2.6.12 未来发展方向 
2.7 著名的漏洞 
2.7.1 远程登录 
2.7.2 Kerberos 
2.8 小结 
2.9 阅读材料 
第3章 指针诡计 
3.1 数据位置 
3.2 函数指针 
3.3 对象指针 
3.4 修改指令指针 
3.5 全局偏移表 
3.6 dtors区 
3.7 虚指针 
3.8 atexit和on—exit函数 
3.9 longjmp函数 
3.10 异常处理 
3.10.1 结构化异常处理 
3.10.2 系统默认异常处理 
3.11 缓解策略 
3.11.1 栈探测仪 
3.11.2 W—X 
3.11.3 对函数指针编码和解码 
3.12 小结 
3.13 阅读材料 
第4章 动态内存管理 
4.1 C内存管理 
4.1.1 C标准内存管理函数 
4.1.2 对齐 
4.1.3 alloca和变长数组 
4.2 常见的C内存管理错误 
4.2.1 初始化错误 
4.2.2 未检查返回值 
4.2.3 Null或无效指针解引用 
4.2.4 引用已释放内存 
4.2.5 多次释放内存 
4.2.6 内存泄漏 
4.2.7 零长度分配 
4.2.8 DR # 400 
4.3 C++的动态内存管理 
4.3.1 分配函数 
4.3.2 释放函数 
4.3.3 垃圾回收 
4.4 常见的C++内存管理错误 
4.4.1 未能正确检查分配失败 
4.4.2 不正确配对的内存管理函数 
4.4.3 多次释放内存 
4.4.4 释放函数抛出一个异常 
4.5 内存管理器 
4.6 Doug Lea的内存分配器 
4.7 双重释放漏洞 
4.7.1 写入已释放的内存 
4.7.2 RtlHeap 
4.7.3 缓冲区溢出(终极版) 
4.8 缓解策略 
4.8.1 空指针 
4.8.2 一致的内存管理约定 
4.8.3 phkmalloc 
4.8.4 随机化 
4.8.5 OpenBSD 
4.8.6 jemalloc内存管理器 
4.8.7 静态分析 
4.8.8 运行时分析工具 
4.9 值得注意的漏洞 
4.9.1 CVS缓冲区溢出漏洞 
4.9.2 Microsoft数据访问组件 
4.9.3 CVS服务器双重释放漏洞 
4.9.4 MIT Kerberos 5中的漏洞 
4.10 小结 
第5章 整数安全 
5.1 整数安全导论 
5.2 整数数据类型 
5.2.1 无符号整数类型 
5.2.2 回绕 
5.2.3 有符号整数类型 
5.2.4 有符号整数的取值范围 
5.2.5 整数溢出 
5.2.6 字符类型 
5.2.7 数据模型 
5.2.8 其他整数类型 
5.3 整数转换 
5.3.1 转换整数 
5.3.2 整数转换级别 
5.3.3 整数类型提升 
5.3.4 普通算术转换 
5.3.5 由无符号整数类型转换 
5.3.6 由有符号整数类型转换 
5.3.7 转换的影响 
5.4 整数操作 
5.4.1 赋值 
5.4.2 加法 
5.4.3 减法 
5.4.4 乘法 
5.4.5 除法和求余 
5.4.6 移位 
5.5 整数漏洞 
5.5.1 漏洞 
5.5.2 回绕 
5.5.3 转换和截断错误 
5.5.4 非异常的整数逻辑错误 
5.6 缓解策略 
5.6.1 整数类型的选择 
5.6.2 抽象数据类型 
5.6.3 任意精度算术 
5.6.4 范围检查 
5.6.5 前提条件和后验条件测试 
5.6.6 安全整数库 
5.6.7 溢出检测 
5.6.8 编译器生成的运行时检查 
5.6.9 可验证范围操作 
5.6.10 仿佛无限范围整数模型 
5.6.11 测试与分析 
5.7 小结 
第6章 格式化输出 
6.1 变参函数 
6.2 格式化输出函数 
6.2.1 格式字符串 
6.2.2 GCC 
6.2.3 Visual C++ 
6.3 对格式化输出函数的漏洞利用 
6.3.1 缓冲区溢出 
6.3.2 输出流 
6.3.3 使程序崩溃 
6.3.4 查看栈内容 
6.3.5 查看内存内容 
6.3.6 覆写内存 
6.3.7 国际化 
6.3.8 宽字符格式字符串漏洞 
6.4 栈随机化 
6.4.1 阻碍栈随机化 
6.4.2 以双字的格式写地址 
6.4.3 直接参数访问 
6.5 缓解策略 
6.5.1 排除用户输入的格式字符串 
6.5.2 静态内容的动态使用 
6.5.3 限制字节写入 
6.5.4 C11附录K边界检查接口 
6.5.5 iostream与stdio 
6.5.6 测试 
6.5.7 编译器检查 
6.5.8 静态污点分析 
6.5.9 调整变参函数的实现 
6.5.10 Exec Shield 
6.5.11 FormatGuard 
6.5.12 静态二进制分析 
6.6 著名的漏洞 
6.6.1 华盛顿大学FTP Daemon 
6.6.2 CDE ToolTalk 
6.6.3 Ettercap NG—0.7.2版 
6.7 小结 
6.8 阅读材料 
…… 
第7章 并发 
第8章 文件I/O 
第9章 推荐的实践 
参考文献 
缩略语

百度云及其他网盘下载地址:点我

c++学习书籍推荐《C和C++安全编码》下载的更多相关文章

  1. C语言学习书籍推荐《C Primer Plus(中文版)(第5版)》下载

    普拉塔 (Prata S.) (作者), 云巅工作室 (译者) <C Primer Plus(中文版)(第5版)>共17章,介绍了C语言的基础知识,包括数据类型.格式化输入输出.运算符.表 ...

  2. java虚拟机的学习书籍推荐

    javaEE开发已然是一个老生常谈的话题了,但经典之所以会成为经典,就是因为有可重复琢磨之处,每一次的反复推敲都会有不一样的收获.如果你不满足于做一个只会写if…else…的Java程序员,而是希望更 ...

  3. C++学习书籍推荐《Accelerated C++中文版》下载

    百度云及其他网盘下载地址:点我 媒体推荐 书评 这是一本一流的C++入门书,它采用了一种和实践相结合的方式来解决具体的问题.相比我所见过的其他C++入门书来说,本书以令人惊奇的紧凑格式覆盖了更多的关于 ...

  4. C语言学习书籍推荐《C陷阱与缺陷》下载

    下载地址:点我 凯尼格 (作者), 高巍 (译者) <C和C++经典著作:C陷阱与缺陷>适合有一定经验的C程序员阅读学习,即便你是C编程高手,<C和C++经典著作:C陷阱与缺陷> ...

  5. C语言学习书籍推荐《C和指针 Pointers On C》下载

    <C和指针 POINTERS ON C>提供与C语言编程相关的全面资源和深入讨论.本书通过对指针的基础知识和高 级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去.  全书共18 ...

  6. java学习书籍推荐

    1. Java 语言基础 谈到Java 语言基础学习的书籍,大家肯定会推荐Bruce Eckel 的<Thinking in Java >.它是一本写的相当深刻的技术书籍,Java 语言基 ...

  7. linux学习书籍推荐linux学习书籍推荐

    引用地址:http://www.cnblogs.com/notepi/archive/2013/06/15/3137103.html Linux 学习书目推荐 Linux基础 1.<Linux与 ...

  8. 19年最新 Python0基础学习书籍推荐(内涵PDF地址以及书籍源码)

    去年看过一篇文章,是关于18年的最适合0基础学习的书籍,今年,最新的书籍也已经统计出来.书籍的PDF太过于难找,所以很多PDF都找不到. 仅仅只能找到英文版PDF 本文章统计了18.19并做过对比,在 ...

  9. c++学习书籍推荐《C++沉思录》下载

    百度云及其他网盘下载地址:点我 编辑推荐 经典C++图书,应广大读者的强烈要求再版 目录 第0章 序幕第一篇 动机第1章 为什么我用C++第2章 为什么用C++工作第3章 生活在现实世界中 第二篇 类 ...

  10. c++学习书籍推荐《C++编程思想第一卷》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++编程思想>(第1卷)(第2版)第1版荣获"软件开发"杂志评选的1996年度 图书震撼大奖,中文版自2000年推出以来, ...

随机推荐

  1. NoSQL Manager for Cassandra 3.2.0.1 带Key

    NoSQL Manager for Cassandra 3.2.0.1 是一个Windows平台下Cassandra 数据库的高级管理工具.请低调使用. NoSQLManagerforCassandr ...

  2. 1 min 数据查询 SQL 优化

    问题 前几天线上数据库 IOPS 飙升,一直居高不下,最近并没有升级.遂查看数据库正在执行的 SQL 语句,发现有个查询离线设备的语句极其缓慢. 探寻原因 SELECT o.* FROM ( SELE ...

  3. C/C++使用libcurl库发送http请求(get和post可以用于请求html信息,也可以请求xml和json等串)

    C++要实现http网络连接,需要借助第三方库,libcurl使用起来还是很方便的 环境:win32 + vs2015 如果要在Linux下使用,基本同理 1,下载编译libcurl 下载curl源码 ...

  4. 在WPF中引用WinForm的控件

     以ArcEngine为例: mapControl = new AxMapControl(); MapHost.Child = mapControl; //MapHost为WindowsFormHos ...

  5. mfc开发an unsupported operation was attempted错误解决

    mfc开发删除了一个控件后,没有删除该控件对应的id和代码导致 觉得mfc真xx 在资源编辑可视化界面手动删除一个控件后,resource.h里该控件的ID竟然还存在 因为该id还存在,调用该控件的代 ...

  6. 零元学Expression Blend 4 - Chapter 36 来玩捉迷藏吧!!!看看ScrollBar的Disabled与Hidden之差异

    原文:零元学Expression Blend 4 - Chapter 36 来玩捉迷藏吧!!!看看ScrollBar的Disabled与Hidden之差异 本次要针对Disabled以及Hidden作 ...

  7. Advanced Installer 中测试数据库连接提示“未发现数据源名称并且未指定默认驱动程序”的解决办法

    原文:Advanced Installer 中测试数据库连接提示"未发现数据源名称并且未指定默认驱动程序"的解决办法 最近需要制作一个安装包,安装包的要求如下: 1.用户手工填写M ...

  8. 配置我的Ubuntu Server记(包括桌面及VNC,SSH,NTP,NFS服务) good

    跟老板申请买了一台配置相对较好的计算机回来做GPU计算,当然,不能独享,所以做成服务器让大家都来用. 这篇日志用来记录配置过程中遇到的一些问题,以方便下次不需要到处谷歌度娘. 安装Server版系统 ...

  9. SqlServer 动态SQL(存储过程)中Like 传入参数无正确返回值的问题

    最近在做项目时,以动态Sql进行Like语句查询时发现应该返回的结果却一直返回空,后来发现是写法错误: 错误SQL: DECLARE @0 varchar(20) SET @0 = 'XA-LZ' S ...

  10. [android自动化构建]之centos安装gradle

    这是android自动化构建系列之环境配置 这里只记录部分gradle相关的配置 下载并解压 下载地址参考这里:https://services.gradle.org/distributions/,未 ...