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

C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] ,
2015-08
版次: 1
ISBN: 9787111509820
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 392页
52人买过
  • 本书是业界最广泛采纳的编程指导原则汇编 ,它紧扣各个版本的C语言标准,分门别类地介绍了各种可能引发可利用安全漏洞的未定义行为、未指定行为,提出了安全编码的规则和建议,在每条规则和建议上都用现实的相容及不相容代码示例加以说明,本书是该标准文档的第2版,加入了对最新的C11标准的支持,对于所有有志于C语言软件开发的技术人员来说,都是不可或缺的参考书。全书共14章,包括98条编码规则,每条规则都由一个标题、一段说明和不相容/相容的代码示例组成。第1章讲述与预处理器相关的规则;第2章介绍的规则与声明和初始化相关;第3章介绍的是与表达式相关的规则;第4~7章讲述的规则分别与整数、浮点数、数组及字符和字符串相关;第8章介绍与内存管理相关的规则;第9章讲解的规则与输入/输出相关;第10章介绍的规则与环境相关;第11~13章分别讲解与信号、错误处理和并发性有关的规则;第14章讲述几条杂项规则。最后提供3个附录,分别包括本书使用的词汇表、未定义行为和未指定行为。 Robert C. Seacord 是卡内基-梅隆大学软件工程研究所(SEI)CERT计划的安全编码技术经理。CERT项目是运营相关网络安全研究和对美国网络安全挑战创新/及时响应的可信提供商。安全编码倡议和软件开发人员及软件开发组织合作,在部署之前消除由于编码错误造成的安全漏洞。Robert还是卡内-基梅隆大学计算机科学学院和信息网络学院的副教授。他曾经撰写过8本书籍,包括《Secure 
    Coding in C and C++》第2版和《Java Coding Guidelines: 75 Recommendations for Reliable 
    and Secure 
    Programs》等。他还发表过40篇软件安全性、基于组件的软件工程、基于Web系统设计、遗留系统现代化、组件储存库和搜索引擎以及用户界面设计和开发方面的论文。 译者序
    前言
    贡献者简介
    第1章 预处理器(PRE)
    1.1 PRE30-C. 不要通过连接创建通用字符名称
    1.2 PRE31-C. 避免不安全宏参数的副作用
    1.3 PRE32-C. 不要在类函数的宏调用中使用预处理器指令
    第2章 声明和初始化(DCL)
    2.1 DCL30-C. 声明具有正确存储持续期的对象
    2.2 DCL31-C. 在使用前声明标识符
    2.3 DCL36-C. 不要声明具有冲突链接类别的标识符
    2.4 DCL37-C. 不要声明或者定义保留标识符
    2.5 DCL38-C. 使用正确语法声明灵活数组成员
    2.6 DCL39-C. 避免在结构填充中泄露信息
    2.7 DCL40-C. 不要创建相同函数或者对象的不兼容声明
    2.8 DCL41-C. 不要在switch语句第一个条件标签之前声明变量
    第3章 表达式(EXP)
    3.1 EXP30-C. 不要依赖求值顺序以避免副作用
    3.2 EXP32-C. 不要通过非易失性引用访问易失性对象
    3.3 EXP33-C. 不要读取未初始化的内存
    3.4 EXP34-C. 不要对null指针进行解引用
    3.5 EXP35-C. 不要修改具有临时生命期的对象
    3.6 EXP36-C. 不要将指针转换为更严格对齐的指针类型
    3.7 EXP37-C. 用正确数量和类型的参数调用函数
    3.8 EXP39-C. 不要通过不兼容类型的指针访问变量
    3.9 EXP40-C. 不要修改常量对象
    3.10 EXP42-C. 不要比较填充数据
    3.11 EXP43-C. 使用restrict限定的指针时避免未定义行为
    3.12 EXP44-C. 不要向sizeof、_Alignof或者_Generic传递有副作用的操作数
    3.13 EXP45-C. 不要在选择语句中执行赋值
    第4章 整数(INT)
    4.1 INT30-C. 确保无符号整数运算不产生回绕
    4.2 INT31-C. 确保整数转换不会造成数据丢失或者错误解释
    4.3 INT32-C. 确保有符号整数的运算不造成溢出
    4.4 INT33-C. 确保除法和余数运算不会造成0除数错误
    4.5 INT34-C. 不要用负数或者不小于操作数位数的位数对表达式进行移位
    4.6 INT35-C. 使用正确的整数精度
    4.7 INT36-C. 将指针转换为整数或者将整数转换为指针
    第5章 浮点数(FLP)
    5.1 FLP30-C. 不要使用浮点变量作为循环计数器
    5.2 FLP32-C. 避免或者检测数学函数中的定义域和值域错误
    5.3 FLP34-C. 确保浮点数转换在新类型的范围内
    5.4 FLP36-C. 将整数值转换为浮点指针类型时保持精度
    第6章 数组(ARR)
    6.1 ARR30-C. 不要形成或者使用超限的指针或者数组下标
    6.2 ARR32-C. 确保变长数组的大小参数在有效范围内
    6.3 ARR36-C. 不要进行两个不引用相同数组的指针之间的减法或者比较
    6.4 ARR37-C. 不要在指向非数组对象的指针上加或者减一个整数
    6.5 ARR38-C. 保证库函数不形成无效指针
    6.6 ARR39-C. 不要在指针上加或者减一个按比例调整的整数
    第7章 字符和字符串(STR)
    7.1 STR30-C. 不要企图修改字符串字面量
    7.2 STR31-C. 保证字符串存储有足够的空间容纳字符数据和null结束符
    7.3 STR32-C. 不要向要求字符串参数的库函数传递非null结束字符序列
    7.4 STR34-C. 在转换为更大的整数尺寸之前将字符转换为unsigned char类型
    7.5 STR37-C. 字符串处理函数的实参必须可以表示为unsigned char
    7.6 STR38-C. 不要混淆窄和宽字符串及函数
    第8章 内存管理(MEM)
    8.1 MEM30-C. 不要访问已释放内存
    8.2 MEM31-C. 在不再需要时释放动态分配的内存
    8.3 MEM33-C. 动态分配和复制包含灵活数组成员的结构
    8.4 MEM34-C. 只释放动态分配的内存
    8.5 MEM35-C. 为对象分配足够的内存
    8.6 MEM36-C. 不要通过调用realloc()修改对象的对齐方式
    第9章 输入/输出(FIO)
    9.1 FIO30-C. 从格式字符串中排除用户输入
    9.2 FIO31-C. 不要打开已经打开的文件
    9.3 FIO32-C. 不要在只适合文件的设备上执行操作
    9.4 FIO34-C. 区分从文件读入的字符和EOF/WEOF
    9.5 FIO37-C. 不要假定fgets()或者fgetws()在成功时返回非空字符串
    9.6 FIO38-C. 不要复制FILE对象
    9.7 FIO39-C. 不要在没有中间刷新或者定位调用的情况下在一个流中交替输入和输出
    9.8 FIO40-C. 在fgets()或者fgetws()失败时重置字符串
    9.9 FIO41-C. 不要用有副作用的流作为实参调用getc()、putc()、getwc()或者putwc()
    9.10 FIO42-C. 在不再需要时关闭文件
    9.11 FIO44-C. 对fsetpos()只使用fgetpos()返回的值
    9.12 FIO45-C. 避免访问文件时出现TOCTOU竞争条件
    9.13 FIO46-C. 不要访问已关闭文件
    9.14 FIO47-C. 使用有效格式字符串
  • 内容简介:
    本书是业界最广泛采纳的编程指导原则汇编 ,它紧扣各个版本的C语言标准,分门别类地介绍了各种可能引发可利用安全漏洞的未定义行为、未指定行为,提出了安全编码的规则和建议,在每条规则和建议上都用现实的相容及不相容代码示例加以说明,本书是该标准文档的第2版,加入了对最新的C11标准的支持,对于所有有志于C语言软件开发的技术人员来说,都是不可或缺的参考书。全书共14章,包括98条编码规则,每条规则都由一个标题、一段说明和不相容/相容的代码示例组成。第1章讲述与预处理器相关的规则;第2章介绍的规则与声明和初始化相关;第3章介绍的是与表达式相关的规则;第4~7章讲述的规则分别与整数、浮点数、数组及字符和字符串相关;第8章介绍与内存管理相关的规则;第9章讲解的规则与输入/输出相关;第10章介绍的规则与环境相关;第11~13章分别讲解与信号、错误处理和并发性有关的规则;第14章讲述几条杂项规则。最后提供3个附录,分别包括本书使用的词汇表、未定义行为和未指定行为。
  • 作者简介:
    Robert C. Seacord 是卡内基-梅隆大学软件工程研究所(SEI)CERT计划的安全编码技术经理。CERT项目是运营相关网络安全研究和对美国网络安全挑战创新/及时响应的可信提供商。安全编码倡议和软件开发人员及软件开发组织合作,在部署之前消除由于编码错误造成的安全漏洞。Robert还是卡内-基梅隆大学计算机科学学院和信息网络学院的副教授。他曾经撰写过8本书籍,包括《Secure 
    Coding in C and C++》第2版和《Java Coding Guidelines: 75 Recommendations for Reliable 
    and Secure 
    Programs》等。他还发表过40篇软件安全性、基于组件的软件工程、基于Web系统设计、遗留系统现代化、组件储存库和搜索引擎以及用户界面设计和开发方面的论文。
  • 目录:
    译者序
    前言
    贡献者简介
    第1章 预处理器(PRE)
    1.1 PRE30-C. 不要通过连接创建通用字符名称
    1.2 PRE31-C. 避免不安全宏参数的副作用
    1.3 PRE32-C. 不要在类函数的宏调用中使用预处理器指令
    第2章 声明和初始化(DCL)
    2.1 DCL30-C. 声明具有正确存储持续期的对象
    2.2 DCL31-C. 在使用前声明标识符
    2.3 DCL36-C. 不要声明具有冲突链接类别的标识符
    2.4 DCL37-C. 不要声明或者定义保留标识符
    2.5 DCL38-C. 使用正确语法声明灵活数组成员
    2.6 DCL39-C. 避免在结构填充中泄露信息
    2.7 DCL40-C. 不要创建相同函数或者对象的不兼容声明
    2.8 DCL41-C. 不要在switch语句第一个条件标签之前声明变量
    第3章 表达式(EXP)
    3.1 EXP30-C. 不要依赖求值顺序以避免副作用
    3.2 EXP32-C. 不要通过非易失性引用访问易失性对象
    3.3 EXP33-C. 不要读取未初始化的内存
    3.4 EXP34-C. 不要对null指针进行解引用
    3.5 EXP35-C. 不要修改具有临时生命期的对象
    3.6 EXP36-C. 不要将指针转换为更严格对齐的指针类型
    3.7 EXP37-C. 用正确数量和类型的参数调用函数
    3.8 EXP39-C. 不要通过不兼容类型的指针访问变量
    3.9 EXP40-C. 不要修改常量对象
    3.10 EXP42-C. 不要比较填充数据
    3.11 EXP43-C. 使用restrict限定的指针时避免未定义行为
    3.12 EXP44-C. 不要向sizeof、_Alignof或者_Generic传递有副作用的操作数
    3.13 EXP45-C. 不要在选择语句中执行赋值
    第4章 整数(INT)
    4.1 INT30-C. 确保无符号整数运算不产生回绕
    4.2 INT31-C. 确保整数转换不会造成数据丢失或者错误解释
    4.3 INT32-C. 确保有符号整数的运算不造成溢出
    4.4 INT33-C. 确保除法和余数运算不会造成0除数错误
    4.5 INT34-C. 不要用负数或者不小于操作数位数的位数对表达式进行移位
    4.6 INT35-C. 使用正确的整数精度
    4.7 INT36-C. 将指针转换为整数或者将整数转换为指针
    第5章 浮点数(FLP)
    5.1 FLP30-C. 不要使用浮点变量作为循环计数器
    5.2 FLP32-C. 避免或者检测数学函数中的定义域和值域错误
    5.3 FLP34-C. 确保浮点数转换在新类型的范围内
    5.4 FLP36-C. 将整数值转换为浮点指针类型时保持精度
    第6章 数组(ARR)
    6.1 ARR30-C. 不要形成或者使用超限的指针或者数组下标
    6.2 ARR32-C. 确保变长数组的大小参数在有效范围内
    6.3 ARR36-C. 不要进行两个不引用相同数组的指针之间的减法或者比较
    6.4 ARR37-C. 不要在指向非数组对象的指针上加或者减一个整数
    6.5 ARR38-C. 保证库函数不形成无效指针
    6.6 ARR39-C. 不要在指针上加或者减一个按比例调整的整数
    第7章 字符和字符串(STR)
    7.1 STR30-C. 不要企图修改字符串字面量
    7.2 STR31-C. 保证字符串存储有足够的空间容纳字符数据和null结束符
    7.3 STR32-C. 不要向要求字符串参数的库函数传递非null结束字符序列
    7.4 STR34-C. 在转换为更大的整数尺寸之前将字符转换为unsigned char类型
    7.5 STR37-C. 字符串处理函数的实参必须可以表示为unsigned char
    7.6 STR38-C. 不要混淆窄和宽字符串及函数
    第8章 内存管理(MEM)
    8.1 MEM30-C. 不要访问已释放内存
    8.2 MEM31-C. 在不再需要时释放动态分配的内存
    8.3 MEM33-C. 动态分配和复制包含灵活数组成员的结构
    8.4 MEM34-C. 只释放动态分配的内存
    8.5 MEM35-C. 为对象分配足够的内存
    8.6 MEM36-C. 不要通过调用realloc()修改对象的对齐方式
    第9章 输入/输出(FIO)
    9.1 FIO30-C. 从格式字符串中排除用户输入
    9.2 FIO31-C. 不要打开已经打开的文件
    9.3 FIO32-C. 不要在只适合文件的设备上执行操作
    9.4 FIO34-C. 区分从文件读入的字符和EOF/WEOF
    9.5 FIO37-C. 不要假定fgets()或者fgetws()在成功时返回非空字符串
    9.6 FIO38-C. 不要复制FILE对象
    9.7 FIO39-C. 不要在没有中间刷新或者定位调用的情况下在一个流中交替输入和输出
    9.8 FIO40-C. 在fgets()或者fgetws()失败时重置字符串
    9.9 FIO41-C. 不要用有副作用的流作为实参调用getc()、putc()、getwc()或者putwc()
    9.10 FIO42-C. 在不再需要时关闭文件
    9.11 FIO44-C. 对fsetpos()只使用fgetpos()返回的值
    9.12 FIO45-C. 避免访问文件时出现TOCTOU竞争条件
    9.13 FIO46-C. 不要访问已关闭文件
    9.14 FIO47-C. 使用有效格式字符串
查看详情
系列丛书 / 更多
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
高级C/C++编译技术
[美]米兰·斯特瓦诺维奇(Milan Stevanovic) 著;卢誉声 译
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
深入实践Boost:Boost程序库开发的94个秘笈
[俄]Antony Polukhin 著;卢涛 译
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
C指针:基本概念、核心技术及最佳实践
[印度]纳威恩·拓奥普(NaveenToppo)、海瑞思科什·德万(HrishikeshDewan) 著;王贵财 译
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
C高级编程:基于模块化设计思想的C语言开发
吉星 著
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
C/C++技术丛书:大规模C++程序设计
[美]John Lakos 著;刘冰、张林 译;周尚波 校
相关图书 / 更多
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
C安全编码标准
Robert C. Seacord
您可能感兴趣 / 更多
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
亚拉山大的读心术(数学大师的逻辑课) 伦理学、逻辑学 [美]雷蒙德·m.斯穆里安(raymondm.smullyan)
[美]雷蒙德·m.斯穆里安(raymondm.smullyan)
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
纳博科夫精选集第五辑
[美]弗拉基米尔·纳博科夫著
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
九桃盘(美国二十世纪重要女诗人玛丽安·摩尔诗歌精选集,由知名女诗人和女性诗学研究者倪志娟倾情翻译)
[美]玛丽安•摩尔
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
全新正版图书 制造德·戴维尼浙江教育出版社9787572276880
[美]理查德·戴维尼
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
血泪之泣
[美]希瑟·丘·麦克亚当
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
(当代学术棱镜译丛)艺术批评入门:历史、策略与声音
[美]克尔·休斯顿
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
金钱游戏(划时代增订版):深层透析金融游戏表象之下的规则与黑箱 长达60年盘踞金融畅销榜的现象级作品
[美]亚当·史密斯(Adam Smith) 著;刘寅龙 译
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
波西·杰克逊阿波罗的试炼系列第3册:烈焰迷宫
[美]雷克·莱尔顿 著;火皮豆 译
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
矿王谷的黎明:塞拉俱乐部诉莫顿案与美国环境法的转变(精装典藏版)
[美]丹尼尔·P.塞尔米,(Daniel,P.Selmi)
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
体式神话:瑜伽传统故事精粹(第二版) (从30个体式古老起源中汲取灵感与力量,内附精美插图)
[美]阿兰娜·凯瓦娅(Alanna Kaivalya)[荷]阿诸那·范德·库伊(Arjuna van der Kooij)
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
诺奖作家给孩子的阅读课·生命教育(3-9年级,莫言余华的文学启蒙,垫高阅读起点,提升作文能力)
[美]海明威等
C安全编码标准:开发安全、可靠、稳固系统的98条规则(原书第2版)
蚯蚓的日记(全4册)【平装版】
[美]朵琳·克罗宁