C和C++安全编码(原书第2版)
上QQ阅读APP看书,第一时间看更新

译者序

随着信息技术与相关产业的发展,人类的工作、学习与生活越来越依赖于计算机软件和网络,但与此同时,安全事件层出不穷,网络攻击造成的损失也与日俱增。就在本书的翻译过程中,国际上发生了“棱镜门”事件。“信息战士”的工作使受害国家的安全都受到了威胁,更不用说窃取普通公民的网上交易信息以及个人信息了。然而,这些信息与人们的生产、生活息息相关,信息的盗用给人们造成了财产和无形的损失。这使人们比以往更加关注安全,逐渐意识到完善网络安全势在必行,各级政府以及各企事业单位在安全方面的投入也在不断提高。本书正是在这样的背景下产生的,它紧贴实际编程活动,深入浅出,帮你解决实际应用中的安全漏洞问题。

我曾经编写过C和C++代码,对这两门编程语言都深有感触。C和C++语言是实现许多操作系统和服务器软件的开发语言,支撑着许多为数以万计的用户提供服务的重要应用程序,必须坚实可靠才能持续不断地正常运行。特别是移动互联网的发展,大大增加了应用程序的种类和数量,不安全的应用程序也会造成安全漏洞迅速地大面积传播。因为C和C++语言产生的年代较早并且设计为与底层设备打交道,所以对效率要求很高,这使得这两种语言存在固有的安全问题,虽然语言标准的制定者意识到了这个问题,并提出了许多更加安全的解决方案,但大量的遗留代码中仍然包含不安全的实现和库函数调用,这些都会不时引发安全问题。许多安全检测工具可以帮助人们检查出代码的漏洞,但却不能帮助他们把它们修改正确,而且对C语言中某些功能理解上的偏差往往会导致误用。总而言之,编写安全代码完全是开发人员的责任,而开发人员若要具备这方面的技能,就得掌握相关的理论并在实践中自觉加以运用。

本书涵盖安全编码各个方面,人们普遍能意识到指针是C和C++中最灵活的功能,也是程序员最容易犯错的地方,为强调其重要性有人曾说过“不会用指针的C程序员不是真正的C程序员”,这是因为指针直接对内存地址进行读、写访问,它的重要性不言而喻。但与此同时,这两门语言的另一些要点却常常被忽视。然而编写安全代码的从业人员,则需要全面地了解字符串、整数、内存管理、格式化输入与输出、文件操作中的安全陷阱,并学会规避之法。此外,现代应用程序绝大多数具备并发访问能力,因此本书新增了这些方面的内容,使之更符合实际需要。本书每个主题都配有实例,读者能从中了解产生安全漏洞的缘由和正确的做法。本书还总结了安全编码的实施指南,指出软件开发组织应用这些规程可以提高安全软件的开发效率并更能保证产品符合安全要求。本书引用了许多相关着作,以便于读者进一步了解某个主题的细节。总之,本书值得每个从业人员在开始实际编程活动前阅读。

此外,本书作者Robert C.Seacord是业界着名的安全专家,着有多本安全编程着作。他所领导的CERT项目定期发布安全报告,并与软件厂商合作解决安全问题,在安全领域硕果累累。本书很多内容引用自实际的安全问题,并结合了国际标准C11和C++11展开叙述,实用且跟踪了C和C++语言的最新发展。因此,我郑重向您推荐此书,希望它能在检测及修复安全漏洞上对您有所帮助!

感谢机械工业出版社谢晓芳编辑邀请我翻译本书并对译文细致地审查和润色。感谢本书第1版译者荣耀和罗翼先生做出的贡献,他们的辛勤工作保障了本书的顺利完成。

感谢我的妻子李颖一如既往的支持和儿子卢〇一的鼓励,他们是我工作的动力。

希望这本书能对读者有所帮助。由于译者经验和水平有限,译文中难免有不妥之处,恳请读者批评指正!

卢涛