《今天的软件工程人员必须理解建立安全软件的基本规则,这不是因为重点》由会员分享,可在线阅读,更多相关《今天的软件工程人员必须理解建立安全软件的基本规则,这不是因为重点(2页珍藏版)》请在金锄头文库上搜索。
1、今天的软件工程人员必须理解建立安全软件的基本规则,这不是因为“这是一个好主 意”,或者我们想卖出更多的书, 而是因为互联网的本质和一小撮卑劣的家伙想控制互联网。 这不是说安全是如何特殊,它其实就是可靠性的另一面。我们都想编写出可靠的软件,而 不安全的软件肯定是不可靠的。软件工程人员不可能花许多时间学习似乎没有什么回报的新规则,这就是我们编写本 书的原因:读者不需要翻阅上千页来了解能应用于手头工作的某个新规则,而只需阅读可 应用于当前建构的软件的一章或几章内容,以确保不会构建出不安全的软件。本书是The 19 Deadly Sins of Software Security (一个都不能有一 一
2、软件的19个致命安 全漏洞)的第2版。在开始编写本书时,我们其实并不知道读者对本书的期望。第1版卖得很好,大多数与我们谈论该书的人都喜欢它,这主要是因为第1版短小精悍、中肯、可操作性很强。与我们交谈的每个软件开发人员和设计人员都说,他们喜欢第1版的易于阅读,不需要学习软件安全的几乎所有内容,只要查看可应用于当前构建的软件的那几章即 可。一些公司还把本书用作临时培训教材,在其员工开始设计或编写产品之前,必须阅读 本书的相应章节。类似这样的评论让我们很高兴,因为我们在开始编写第1版时,就希望它简明扼要、语言流畅、可操作性强。但第一版是4年前编写的,而软件安全是一个不断变化的主题,不仅出现了新的漏洞
3、 类型,还出现了漏洞的变体,当然人们也想出了新的防范措施和缓解手段,以应对不断演 变的各种威胁。由于安全领域的变化非常快,所以涉足软件开发的每个人都必须知道,有 哪些安全问题、如何找出它们、如何解决它们。我们第一次开始思考本书的第2版时,面对的问题是如何把软件安全致命漏洞的数量限制在可管理、切实有效的范围内。讨论软件界的安全问题时很容易跑题,还会描述对建 立更安全的软件无关紧要的细节。这些细节可能在学术上和智力上很有刺激性,但我们只 希望读者建立更安全的软件,而不是开始一次大脑探险!如果您熟悉关系数据库,就应知道Ted Codd提出的12 Rules,这13条法则 佗们从0到12编号)定义了关
4、系数据库。 许多数据库界的人都逐字引用这13条法则,因为它们非常简单,能应用于他们的工作上。我们想使本书比较短小,就像Codd法则那样。我们可不希望把19个致命漏洞扩展到100个致命漏洞,其中包含了罕见的、奇异的、浅显的、不相VIII 软件安全的 24 宗罪 编程缺陷与修复之道 关的安全漏洞。这是一个两难问题:如何提高本书的价值,而又不使书过厚? 我们花了很长时间研究软件业在过去 4 年中的变化,最后编写出了 24 个致命漏洞。 本书有许多新章节,删除了一些章节,还合并了一些章节。我们对自己的成果很满意,认为本书反映了目前的大多数软件安全问题。我们也达到 了之前的目标:短小、可操作性强、扼要。
5、本书读者和应读的章节如果您是在设计、编写和测试软件,就是本书的核心读者。您不需要阅读本书的每一 页,除非您喜欢这么做。本书分为 4 个主要部分: Web 应用程序漏洞 实现漏洞 加密漏洞 联网漏洞 显然,如果您在建立任意类型的 Web 应用程序(客户端或服务器端) ,就需要阅读第I 部分。第 II 部分最长,包含许多与语言相关的实现问题,稍后将讨论这一部分。如果应 用程序涉及到加密,就应阅读第 III 部分。最后,如果应用程序进行了任意形式的网络通信, 就应阅读最后一部分。现在,看看第 II 部分的问题: 所有的开发人员都应阅读第 10、11、12和 14章; 需要频繁更新应用程序的开发人员应阅读第15 章; 如果使用支持异常的语言,就应阅读第 9 章; 如果应用程序是用 C 或 C+ 编写的,就应阅读第 5、 6、7 和 8 章。 如前所述,一些开发人员把上一版看作“即时”培训素材。我们认为,本版仍扮演这 一角色, 尤其是使用快捷软件开发方法进行软件开发的人员。 在每个快速开发工作的开始, 都应先确定要构建什么功能,并确保设计人员、开发人员和测试人员阅读了相关的章节。