C安全编码标准(实现C安全编程的权威指南,在安全中编程,在编程中融入安全概念)
基本信息
- 作者: Robert C. Seacord
- 译者: 徐波
- 丛书名: 开发人员专业技术丛书
- 出版社:机械工业出版社
- ISBN:9787111284420
- 上架时间:2009-11-19
- 出版日期:2010 年1月
- 开本:16开
- 页码:496
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C/Turbo C > C
编辑推荐
一本重要的桌面参考手册,记录了《CERT C安全编码标准》的第一次官方发布.
每一位C程序员的案头必备.
内容新颖,讲解详尽
实现C安全编程的权威指南...
内容简介回到顶部↑
书籍
计算机书籍
本书提供了在c编程语言中进行安全编码的指导方针,描述了c语言程序中导致软件潜在风险根源的编码错误,并根据严重性、被利用的可能性以及修补成本设置了优先级。每个指导方针提供了不安全代码的例子以及安全的替代方案。如果统一应用这些指导方针,可帮助消除导致缓冲区溢出、格式字符串潜在风险、整数溢出和常见的软件潜在风险的关键编码错误,从而创建更健壮的高质量软件系统。.
本书内容新颖,讲解详尽,可作为软件开发技术人员的参考用书。..
软件安全性对于公司的运作和财富具有很大的影响,与个人的生活也息息相关。为了创建安全的软件,开发人员必须知道什么地方存在危险。c的安全编码要比许多经验丰富的程序员所想像的更为困难。
本书是一本重要的桌面参考手册,记录了《cert c安全编码标准》的第一次官方发布。这个标准逐项描述了c语言程序中导致软件潜在风险根源的编码错误,并根据严重性、被利用的可能性以及修补成本设置了优先级。每个指导方针提供了不安全代码的例子以及安全的替代方案。如果统一应用这些指导方针,可以消除可能导致缓冲区溢出、格式字符串潜在风险、整数溢出和常见的软件潜在风险的关键编码错误。...
计算机书籍
本书提供了在c编程语言中进行安全编码的指导方针,描述了c语言程序中导致软件潜在风险根源的编码错误,并根据严重性、被利用的可能性以及修补成本设置了优先级。每个指导方针提供了不安全代码的例子以及安全的替代方案。如果统一应用这些指导方针,可帮助消除导致缓冲区溢出、格式字符串潜在风险、整数溢出和常见的软件潜在风险的关键编码错误,从而创建更健壮的高质量软件系统。.
本书内容新颖,讲解详尽,可作为软件开发技术人员的参考用书。..
软件安全性对于公司的运作和财富具有很大的影响,与个人的生活也息息相关。为了创建安全的软件,开发人员必须知道什么地方存在危险。c的安全编码要比许多经验丰富的程序员所想像的更为困难。
本书是一本重要的桌面参考手册,记录了《cert c安全编码标准》的第一次官方发布。这个标准逐项描述了c语言程序中导致软件潜在风险根源的编码错误,并根据严重性、被利用的可能性以及修补成本设置了优先级。每个指导方针提供了不安全代码的例子以及安全的替代方案。如果统一应用这些指导方针,可以消除可能导致缓冲区溢出、格式字符串潜在风险、整数溢出和常见的软件潜在风险的关键编码错误。...
作译者回到顶部↑
目录回到顶部↑
关于作者.
前言
第1章本标准使用说明系统质量
自动生成的代码
顺应性
第2章预处理器(pre)
建议和规则
风险评估汇总
相关规则和建议
pre00-c.用内联函数或静态函数代替与函数相似的宏
pre01-c.在宏参数名两边加上括号
pre02-c.宏替换列表应该加上括号
pre03-c.应该使用typedef定义编码类型
pre04-c.不要复用标准头文件名
pre05-c.理解连接标记或执行字符串化时的宏替换
pre06-c.把头文件放在包含防护条件中
pre07-c.避免使用连续的问号
pre08-c.保证头文件名惟一
pre09-c.不要用不安全的函数替换安全函数
pre10-c.在一个do-while循环中包装多条语句的宏
前言
第1章本标准使用说明系统质量
自动生成的代码
顺应性
第2章预处理器(pre)
建议和规则
风险评估汇总
相关规则和建议
pre00-c.用内联函数或静态函数代替与函数相似的宏
pre01-c.在宏参数名两边加上括号
pre02-c.宏替换列表应该加上括号
pre03-c.应该使用typedef定义编码类型
pre04-c.不要复用标准头文件名
pre05-c.理解连接标记或执行字符串化时的宏替换
pre06-c.把头文件放在包含防护条件中
pre07-c.避免使用连续的问号
pre08-c.保证头文件名惟一
pre09-c.不要用不安全的函数替换安全函数
pre10-c.在一个do-while循环中包装多条语句的宏
前言回到顶部↑
在C编程语言中,安全编码的一个本质要素是具有良好文档的、可实行的编码标准。编码标准鼓励程序员遵循一组根据项目或组织的要求所确定的统一指导方针,而不是根据程序员的熟悉或偏好来作出决定。编码标准一经确立之后,就可以作为标尺,对源代码进行评估(使用手工或自动的过程)。.
《CERT C安全编码标准》(The CERT C Secure Coding Standard)提供了在C编程语言中进行安全编码的指导方针。这些指导方针的目标是消除不安全的编码实践以及可能被利用而导致潜在风险的未定义行为。在开发代码时遵循这些标准将会产生高质量的软件系统,使它们具有更健壮的行为,对攻击的抵抗性也更强。
本标准受到软件工程协会(SEI)和其他得到许可的伙伴培训部门的支持,并可以作为全球信息保证认证(GIAC)安全软件程序员-C(GSSP-C)考试和认证的基础。
安全软件的需求
1988年11月发生的Morris蠕虫事件导致10%的Internet系统中止,并使人们对安全软件系统有了一个新的、准确的认识。20年后,许多安全分析师、软件开发人员、软件用户和策略制定者都在问同一个问题:“为什么软件不能变得更安全?”
首要的问题是“软件安全”这个术语用在当今已经没有意义。和其他人一样,我也试图定义这个术语,但是并不存在被广泛接受的定义。这是为什么呢?
人们已经提出了软件不能变得更安全的各种原因:工具不够充足、程序员缺乏足够的培训、开发周期太短等。但是,这些都是可以克服的问题。问题的根源在于其他方面。
软件不能变得更安全的原因是缺少对安全软件的需要。简单地说,如果一家开发商已经推出了一种功能更丰富、性能更出色的产品,而另一家开发商却提供了一种虽然安全但功能和性能稍差的产品,并且6个月之后才能上市。毫无疑问,顾客会购买第一种产品,生产商也深知这一点。
为什么顾客不愿购买安全产品呢?这是由于“安全”这个词在这种情况下是没有意义的。顾客为什么要放弃看得到的好处,而去购买一种定义不明确的、不可触摸的属性呢?
本编码标准就致力于解决这个问题。虽然在开发代码时遵循这个标准并不保证软件系统的安全性,但是它向我们提供了大量与代码的质量和安全有关的知识。它告诉我们在开发软件时应该遵循一组由该领域的前沿专家所开发的行业标准的规则和建议。它还告诉我们在开发软件时遵循这个标准可以使我们把注意力和精力集中在编写代码上,而不会受到一些常见的编码错误的困扰。在过去的20年里,CERT协作中心(CERT/CC)已经接到报告并发表了无数由于这些编码错误导致的潜在风险。它告诉我们生产代码的软件开发人员对违反这个标准可能导致并被利用的各种潜在风险具有深入的理解,因此在开发软件时头脑中已经形成了真正的安全思想。
因此,我们在本书中已经着手处理的一个“小”问题是改变开发和购买软件系统的市场动态。通过为C语言程序产生一个“可供行动参考的和可测量的”定义,即遵循这个标准中的规则和建议。我们定义了一种机制,顾客可以通过这种机制来要求安全的软件系统,而生产商也可以根据这种机制来满足顾客的要求。而且,由于“安全”这个词有了确切的含义,因此安全系统这个概念也开始变得有价值。
社区开发过程
《CERT C安全编码标准》的开发历时两年半的时间,是226位撰稿人和评论人共同努力的结晶。
这个标准的开发过程如下:
1)编码标准中的建议和规则来自致力于C编程语言开发和应用的社区,包括负责C标准和用户组的正式标准机构。
2)这些规则和建议的内容和风格由CERT技术部门和业界专家通过CERT安全编码标准wiki(www.securecoding. cert. org)进行编辑。
3)用户社区通过穿插讨论和其他通信工具对公开张贴的内容进行审查和评论。这个标准的草案在London和Kona会议上由ISO/IEC WG14进行审阅,并接受公众(包括C和C++用户协会ACCU以及comp.lang.c新闻组)的审查。
Wiki和本书
在wiki上开发一个安全编码标准具有许多优势。但是,它的一个缺点是其内容不断发生变化。如果希望得到最新的信息或者有兴趣研究还没有完全通过审查的新变化,这当然是很理想的。但是,许多软件开发组织需要一个最终文档,然后它们才能致力于遵循一组(固定的)规则和建议。本书的目标就是作为《CERT C安全编码标准》的1.0版。
自2008年6月本书出版之后,1.0版就开始和安全编译标准的wiki版本出现差异。由于它们所讨论的都是C语言,并且我们对如何安全地使用C语言的认识仍在进步之中,所以CERT将继续在安全编码wiki上发展《CERT C安全编码标准》。这些变化可能会在将来融入到本标准的官方发布版本中。
《CERT C安全编码标准》(The CERT C Secure Coding Standard)提供了在C编程语言中进行安全编码的指导方针。这些指导方针的目标是消除不安全的编码实践以及可能被利用而导致潜在风险的未定义行为。在开发代码时遵循这些标准将会产生高质量的软件系统,使它们具有更健壮的行为,对攻击的抵抗性也更强。
本标准受到软件工程协会(SEI)和其他得到许可的伙伴培训部门的支持,并可以作为全球信息保证认证(GIAC)安全软件程序员-C(GSSP-C)考试和认证的基础。
安全软件的需求
1988年11月发生的Morris蠕虫事件导致10%的Internet系统中止,并使人们对安全软件系统有了一个新的、准确的认识。20年后,许多安全分析师、软件开发人员、软件用户和策略制定者都在问同一个问题:“为什么软件不能变得更安全?”
首要的问题是“软件安全”这个术语用在当今已经没有意义。和其他人一样,我也试图定义这个术语,但是并不存在被广泛接受的定义。这是为什么呢?
人们已经提出了软件不能变得更安全的各种原因:工具不够充足、程序员缺乏足够的培训、开发周期太短等。但是,这些都是可以克服的问题。问题的根源在于其他方面。
软件不能变得更安全的原因是缺少对安全软件的需要。简单地说,如果一家开发商已经推出了一种功能更丰富、性能更出色的产品,而另一家开发商却提供了一种虽然安全但功能和性能稍差的产品,并且6个月之后才能上市。毫无疑问,顾客会购买第一种产品,生产商也深知这一点。
为什么顾客不愿购买安全产品呢?这是由于“安全”这个词在这种情况下是没有意义的。顾客为什么要放弃看得到的好处,而去购买一种定义不明确的、不可触摸的属性呢?
本编码标准就致力于解决这个问题。虽然在开发代码时遵循这个标准并不保证软件系统的安全性,但是它向我们提供了大量与代码的质量和安全有关的知识。它告诉我们在开发软件时应该遵循一组由该领域的前沿专家所开发的行业标准的规则和建议。它还告诉我们在开发软件时遵循这个标准可以使我们把注意力和精力集中在编写代码上,而不会受到一些常见的编码错误的困扰。在过去的20年里,CERT协作中心(CERT/CC)已经接到报告并发表了无数由于这些编码错误导致的潜在风险。它告诉我们生产代码的软件开发人员对违反这个标准可能导致并被利用的各种潜在风险具有深入的理解,因此在开发软件时头脑中已经形成了真正的安全思想。
因此,我们在本书中已经着手处理的一个“小”问题是改变开发和购买软件系统的市场动态。通过为C语言程序产生一个“可供行动参考的和可测量的”定义,即遵循这个标准中的规则和建议。我们定义了一种机制,顾客可以通过这种机制来要求安全的软件系统,而生产商也可以根据这种机制来满足顾客的要求。而且,由于“安全”这个词有了确切的含义,因此安全系统这个概念也开始变得有价值。
社区开发过程
《CERT C安全编码标准》的开发历时两年半的时间,是226位撰稿人和评论人共同努力的结晶。
这个标准的开发过程如下:
1)编码标准中的建议和规则来自致力于C编程语言开发和应用的社区,包括负责C标准和用户组的正式标准机构。
2)这些规则和建议的内容和风格由CERT技术部门和业界专家通过CERT安全编码标准wiki(www.securecoding. cert. org)进行编辑。
3)用户社区通过穿插讨论和其他通信工具对公开张贴的内容进行审查和评论。这个标准的草案在London和Kona会议上由ISO/IEC WG14进行审阅,并接受公众(包括C和C++用户协会ACCU以及comp.lang.c新闻组)的审查。
Wiki和本书
在wiki上开发一个安全编码标准具有许多优势。但是,它的一个缺点是其内容不断发生变化。如果希望得到最新的信息或者有兴趣研究还没有完全通过审查的新变化,这当然是很理想的。但是,许多软件开发组织需要一个最终文档,然后它们才能致力于遵循一组(固定的)规则和建议。本书的目标就是作为《CERT C安全编码标准》的1.0版。
自2008年6月本书出版之后,1.0版就开始和安全编译标准的wiki版本出现差异。由于它们所讨论的都是C语言,并且我们对如何安全地使用C语言的认识仍在进步之中,所以CERT将继续在安全编码wiki上发展《CERT C安全编码标准》。这些变化可能会在将来融入到本标准的官方发布版本中。
媒体评论回到顶部↑
“我是CERT安全编码活动的热情支持者。程序员可以找到关于正确性、清晰性、可维护性、性能等方面的很多建议,但对于特定的语言特性如何影响安全性方式的建议则明显缺乏。本书填补了这个空白。”.
—— Randy Meyers,ANSI C主席
“在过去的几年里,我们依赖于CERT/CC公布各种建议,它们记录了无尽的安全问题。现在,CERT已经汇集了前沿技术专家的建议,向程序员和项目经理提供了实用的指导方针,避免在新的应用程序中出现这些问题,并帮助实现安全的遗留系统。干得好!”
—— Thomas Plum,Plum Hall,Inc.创始人
“互联网的存在极大地增加了对安全、防黑客应用程序的需要。通过组合这个CERT标准和其他安全指导方针,顾客可以获得全面的保护以及创建零缺陷软件的方法。”..
—— Chris Tapp,领域应用程序工程师,LDRA Ltd.
“我觉得这个标准是无可代替的,它汇集了许多专家信息,让我们了解现代的软件系统在实践中是如何失败的。它是创建一个国际安全编码指导方针的良好起点。其他地方找不到这样的信息。就软件安全这个问题而言,你不知道的东西常常会给你带来伤害。”
—— John McDonald,《The Art of Software Security Assessment》的作者之一...
—— Randy Meyers,ANSI C主席
“在过去的几年里,我们依赖于CERT/CC公布各种建议,它们记录了无尽的安全问题。现在,CERT已经汇集了前沿技术专家的建议,向程序员和项目经理提供了实用的指导方针,避免在新的应用程序中出现这些问题,并帮助实现安全的遗留系统。干得好!”
—— Thomas Plum,Plum Hall,Inc.创始人
“互联网的存在极大地增加了对安全、防黑客应用程序的需要。通过组合这个CERT标准和其他安全指导方针,顾客可以获得全面的保护以及创建零缺陷软件的方法。”..
—— Chris Tapp,领域应用程序工程师,LDRA Ltd.
“我觉得这个标准是无可代替的,它汇集了许多专家信息,让我们了解现代的软件系统在实践中是如何失败的。它是创建一个国际安全编码指导方针的良好起点。其他地方找不到这样的信息。就软件安全这个问题而言,你不知道的东西常常会给你带来伤害。”
—— John McDonald,《The Art of Software Security Assessment》的作者之一...








点击看大图






加载中...

