C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)——互动出版网

这篇是计算机类的优质预售推荐>>>>《C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)》

部分目录

译者序

前言

贡献者简介

第1章 预处理器(PRE) 1

1.1 PRE30-C. 不要通过连接创建通用字符名称 1

1.2 PRE31-C. 避免不安全宏参数的副作用 3

1.3 PRE32-C. 不要在类函数的宏调用中使用预处理器指令 7

第2章 声明和初始化(DCL) 9

2.1 DCL30-C. 声明具有正确存储持续期的对象 10

2.2 DCL31-C. 在使用前声明标识符 13

2.3 DCL36-C. 不要声明具有冲突链接类别的标识符 16

2.4 DCL37-C. 不要声明或者定义保留标识符 18

2.5 DCL38-C. 使用正确语法声明灵活数组成员 23

2.6 DCL39-C. 避免在结构填充中泄露信息 26

2.7 DCL40-C. 不要创建相同函数或者对象的不兼容声明 30

2.8 DCL41-C. 不要在switch语句第一个条件标签之前声明变量 35

第3章 表达式(EXP) 37

3.1 EXP30-C. 不要依赖求值顺序以避免副作用 38

3.2 EXP32-C. 不要通过非易失性引用访问易失性对象 42

3.3 EXP33-C. 不要读取未初始化的内存 44

3.4 EXP34-C. 不要对null指针进行解引用 52

3.5 EXP35-C. 不要修改具有临时生命期的对象 56

3.6 EXP36-C. 不要将指针转换为更严格对齐的指针类型 59

3.7 EXP37-C. 用正确数量和类型的参数调用函数 62

3.8 EXP39-C. 不要通过不兼容类型的指针访问变量 67

3.9 EXP40-C. 不要修改常量对象 72

3.10 EXP42-C. 不要比较填充数据 73

3.11 EXP43-C. 使用restrict限定的指针时避免未定义行为 75

3.12 EXP44-C. 不要向sizeof、_Alignof或者_Generic传递有副作用的操作数 82

3.13 EXP45-C. 不要在选择语句中执行赋值 85

译者序

历数各种编程语言,可能很难有一种能够达到C语言的高度。凭借良好的移植性和跨平台支持,以及高效率的低级处理能力,C语言成为现代最流行操作系统平台的基石,也成为教育、研究和软件开发中最受人欢迎的语言之一。

  C语言灵活的类型转换和贴近底层机器实现、目标代码效率高的特性,一直是系统软件开发人员最为喜爱的,但这也是一把双刃剑。随着软件系统的复杂度不断提高,编码中的一些小瑕疵越来越容易暴露出来,从而引发严重的安全问题,加之UNIX、Windows等主流操作系统的各种组件大多以C语言编写,黑客们乐此不疲地寻找着这些方面的漏洞,这给全球的计算机系统安全带来了严重的威胁。

  在这种形势下,制定一种严格的安全编码标准,避免出现可利用的安全漏洞,就成为IT业界的当务之急。许多大型开发团体都制定了自己的安全编码标准,国际标准化组织也对C语言标准进行了修订,对C语言实现提出更严格的要求,从而为安全编码提供了基础。

  本编码标准是业界采纳最广泛的编程指导原则汇编 ,它紧扣各个版本的C语言标准,分门别类地介绍了各种可能引发可利用安全漏洞的未定义行为、未指定行为,提出了安全编码的规则和建议,在每条规则和建议上都用现实的相容及不相容代码示例加以说明。本书是该标准文档的第2版,加入了对最新的C11标准的支持,对所有有志于C语言软件开发的技术人员来说,本书都是不可或缺的参考书。

  本书内容极其丰富,正如作者所言,即便是C语言国际标准中,也存在着许多模糊之处,书中的例子和说明文字,就是要揭开层层迷雾,帮助读者认识很多并不那么明显但是可能造成严重问题的不当编程方法。在翻译过程中我们也深有体会,书中引用的标准条文中,确实有许多似是而非的东西,也许只有在细细咀嚼书中代码片段之后,才能逐步厘清。我们力求再现原书所要阐述的基本原理,希望能够真正地帮助到读者,但因水平所限,错误在所难免,期待广大读者批评指正。

  本书的翻译工作主要由姚军完成,徐锋、陈志勇、谢志雄、方翊、白龙、林耀成、陈霞、宁懿、吴玥等也对翻译工作做出了贡献,在此衷心感谢机械工业出版社华章公司的关敏编辑和其他编审人员做出的辛勤努力。

部分前言

本书为C语言编码提供了规则。这些规则的目标是开发安全、可靠和稳固的系统,例如,消除可能导致程序意外行为和可利用漏洞的未定义行为。遵循本标准定义的编码规则是确保C语言开发的软件系统安全、可靠、稳固的必要条件(但不是充分条件)。安全和稳固的设计也是必要的,安全性关键系统通常会提出比编码标准更严格的要求,例如,要求所有内存都是静态分配的。然而,应用本编码标准将产生高质量的系统,这些系统可靠、健壮并且能够抵御攻击。

  每条规则都由一个标题、一段说明和不相容/相容的代码示例组成。标题是规则的简洁描述,但是有时候不够精确。说明提出了规则的规范要求。不相容代码示例是违反规则的代码示例。搭配的相容解决方案展示了等价的代码,这些代码不违反该规则或者该编码标准中的任何其他规则。

  具有良好文档、可以实施的编码标准是C语言编码必不可少的要素。编码标准鼓励程序员遵循由项目需求和组织确定的一组统一规则,而不是简单地采用程序员熟悉的方法。一旦确定,这些标准可以作为评估源代码(使用人工或者自动化过程)的指标。

  CERT编码规则为业界广泛采纳。Cisco系统公司在2011年10月的Cisco年度SecCon会议上宣布在其产品开发中采用CERT C安全编码标准作为基准编程标准。最近,Oracle将所有CERT安全编码标准整合到现有的安全编码标准中。注意,这是长期协作中的最新步骤:CERT和Oracle以前合作编写了《The CERT Oracle Secure Coding Standard
for Java》(Addison-Wesley,2011)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 09:31:39

C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)——互动出版网的相关文章

机器学习实践 测试驱动的开发方法——互动出版网

这篇是计算机类的优质预售推荐>>>><机器学习实践 测试驱动的开发方法> 用测试驱动方法开发出可靠.稳定的机器学习算法. 编辑推荐 本书介绍在开发机器学习算法时如何运用测试驱动的方法,捕捉可能扰乱正常分析的错误.这本实践指南从测试驱动开发和机器学习的基本原理讲起,展示了如何将测试驱动开发运用于若干机器学习算法,包括朴素贝叶斯分类器和神经网络. 任何机器学习算法都有一些传统的测试方法,但它们通常都不会考虑编码中的人为错误.借助测试驱动的开发方法,你便不会像其他研究者那样盲

Android和PHP开发最佳实践 (第2版)——互动出版网

这篇是计算机类的优质预售推荐>>>><Android和PHP开发最佳实践 (第2版)> 51CTO社区.PHPChina社区强烈推荐!国内第一本同时讲述Android客户端开发和PHP服务端开发的经典著作!市面上第一本把Android应用客户端加服务器开发的完整解决方案分析透彻的书 本书是国内第一本同时讲述Android客户端和PHP服务端开发的经典著作. 本书以一个完整的微博应用项目实例为主线,由浅入深地讲解了Android客户端开发和PHP服务端开发的思路和技巧.从

基于模型的软件开发——互动出版网

这篇是计算机类的优质预售推荐>>>><基于模型的软件开发> 译者序 这是一本关于一种特定的软件设计方法实践的书.MBD(Model-Based Software Development,基于模型的软件开发)方法基本上是一种OO(Object-Oriented,面向对象)方法.其基本观点是:通过静态结构和动态结构的开发,生成面向对象的分析模型,然后通过工具的转换,进而转换为应用程序框架. 本书第一部分着眼于面向对象方法诞生的历史背景,使我们能够了解传统方法存在的问题,也就

Angular JS开发秘籍——互动出版网

这篇是计算机类的优质预售推荐>>>><Angular JS开发秘籍> 使用AngularJS革新MVC方式实现精彩的Web应用,扩展 HTML的AngularJS指令,20多年企业应用和Web界面开发经验作者Brad Dayley 最新作品 内容简介 快速掌握AngularJS Web开发技术 AngularJS是Web开发领域最激动人心的创新技术之一,它为整个开发过程提供结构,旨在简化Web应用的开发和测试. 网站已不再是简单的静态内容--相反,网站更趋动态化,通常单

AV Foundation 开发秘籍--实践掌握iOS &amp; OS X应用的视听处理技术——互动出版网

这篇是计算机类的优质预售推荐>>>><AV Foundation 开发秘籍--实践掌握iOS & OS X应用的视听处理技术> 国内首本译著AV Foundation图书,书中源码及素材免费提供下载 内容简介 快速掌握使用AV Foundation开发iOS和OS X应用的技术如果想开发富媒体iOS或OS X应用程序,你可以使用苹果公司推出的AV Foundation框架来实现诸多神奇功能.不过AV Foundation框架基于最前沿的语言特征,极其庞大,而且相

iOS开发范例实战宝典(进阶篇)——互动出版网

这篇是计算机类的优质推荐>>>><iOS开发范例实战宝典(进阶篇)> 以最新的IOS 8为版本编写,内容覆盖了IOS开发的方方面面,通过大量实例提升实战技能,并对书中的重点和难点进行了专门分析. 编辑推荐 *以最新的iOS 8为版本编写,内容覆盖了iOS开发的方方面面* *通过200多个实例提升实战技能,并对书中的重点和难点进行了专门分析 *注重实战:详细讲解了117个iOS开发经典实例,提高实战开发水平 *内容全面:全面介绍了iOS开发中最为常见的14类界面模块 *由

Swifter:100个Swift开发必备Tip——互动出版网

这篇是计算机类的优质推荐>>>><Swifter:100个Swift开发必备Tip> Swift实践先行者|Line顶尖iOS开发专家onevcat/喵神重磅力作 MacTalk池建强作序推荐 全实战纯技巧好经验 100招通向高手殿堂 编辑推荐 Swift的易学难精体现在其实际项目暗坑无数,需要同时具备知识.技巧和经验的一定储备,本书试图让你快速到达这一境界. onevcat亲赴WWDC见证Swift发布,是全球第一批研究和实践者.对Swift的理解和运用,既能洞悉全局

Swift游戏开发案例实战——互动出版网

这篇是计算机类的优质推荐>>>><Swift游戏开发案例实战> 国内第一本Swift游戏开发图书,系统地讲解了Swift 游戏开发的基础知识和各项关键技术 编辑推荐 *国内第一本Swift游戏开发图书,系统地讲解了Swift 游戏开发的基础知识和各项关键技术: *详细讲解了5个游戏的开发过程,如记忆配对.太空侵略者.Simon记忆.迷你高尔夫.银河大战.这些项目将帮助读者更好地理解iOS项目开发的方式和流程: *结合案例,重点对图形.音频和交互等与游戏紧密相关的知识做了

iOS开发范例实战宝典(基础篇)——互动出版网

这篇是计算机类的优质推荐>>>><iOS开发范例实战宝典(基础篇)> 以最新的IOS 8为版本编写,内容覆盖了IOS开发的方方面面,通过大量实例提升实战技能,并对书中的重点和难点进行了专门分析. 编辑推荐 *以最新的iOS 8为版本编写,内容覆盖了iOS开发的方方面面* *通过200多个实例提升实战技能,并对书中的重点和难点进行了专门分析 *注重实战:详细讲解了117个iOS开发经典实例,提高实战开发水平 *内容全面:全面介绍了iOS开发中最为常见的14类界面模块 *由