编写安全的代码[按需印刷]
基本信息
- 原书名: Writing secure Code
- 原出版社: Microsoft press
- 作者: [美]Michael howard David LeBlanc
- 译者: 程永敬 吴嵘 庄锦山 译等
- 丛书名: 微软公司核心技术书库
- 出版社:机械工业出版社
- ISBN:7111102851
- 上架时间:2002-8-29
- 出版日期:2002 年8月
- 页码:345
- 版次:1-1
- 所属分类:
计算机 > 安全 > 综合
推荐阅读
内容简介回到顶部↑
◆[a href="http://www.china-pub.com/computers/bookinfo/wscft.htm" target="_blank"][font color="#ff6600"]作者访谈录[/font][/a]
◆ [a href="http://www.china-pub.com/computers/bookinfo/gxdrj.htm" target="_blank"][font color="#ff6600"]"高信度软件"的故事[/font]
[/a] ◆[a href="http://www.china-pub.com/computers/common/info.asp?id=12082" target="_blank"][font color="#ff6600"]《编写安全的代码(第2版)(英文影印版)》[/font]
[/a]
随着网络的普及,安全问题已经成了软件业的头等大事。但是,软件安全性的加强,仅仅依靠增加安全功能模块是远远不够的,必须从编码阶段就将安全理念牢记在心。本书是第一本指导程序员从内部加强软件安全的著作。由微软公司的两位安全权威撰写。本书从各种程序代码中可能存在的安全漏洞和安全问题入手,通过大量的实例和代码,详细地分析说明了编写安全的应用程序的方方面面,提供了一些目前尚无其他文档可查的用于安全的设计、安全的编码及测试技术的一些实用技术内幕。本书内容翔实,许多实例代码取材于微软实践过的第一手材料,实用性极强。配套光盘除包含大量实例、工具外,还提供了一份包含本书文字内容的完整的可检索的电子版(电子书)。
随着网络的普及,安全问题已经成了软件业的头等大事。但是,软件安全性的加强,仅仅依靠增加安全功能模块是远远不够的,必须从编码阶段就将安全理念牢记在心。本书是第一本指导程序员从内部加强软件安全的著作。由微软公司的两位安全权威撰写。本书从各种程序代码中可能存在的安全漏洞和安全问题入手,通过大量的实例和代码,详细地分析说明了编写安全的应用程序的方方面面,提供了一些目前尚无其他文档可查的用于安全的设计、安全的编码及测试技术的一些实用技术内幕。本书内容翔实,许多实例代码取材于微软实践过的第一手材料,实用性极强。配套光盘除包含大量实例、工具外,还提供了一份包含本书文字内容的完整的可检索的电子版(电子书)。
作译者回到顶部↑
目录回到顶部↑
第一部分 现 代 安 全
第1章 对安全系统的需求 2
1.1 “wild wild web”上的应用程序 3
1.2 让每个人都参与进来 4
1.2.1 利用机智使整个组织认识到
安全的重要性 5
1.2.2 使用搞破坏的方法 7
1.3 用来灌输安全文化的一些思想 8
1.3.1 让老板发一封电子邮件 8
1.3.2 任命安全宣传员 9
第2章 设计安全的系统 12
2.1 两个常见的安全性错误 12
2.2 赖以生存的安全策略 14
2.2.1 建立一个安全步骤 14
2.2.2 定义产品的安全目标 14
2.2.3 将安全性看做是产品的一个功能 15
2.2.4 从错误中吸取教训 16
2.2.5 使用最小权限 17
2.2.6 使用纵深防御 18
译者序回到顶部↑
译 者 序
正如本书前言中所说,教你以安全的方式设计、编写和测试应用程序是本书惟一的目的。本书从各种系统和用户代码中可能存在的安全漏洞和安全问题入手,通过大量的实例和代码,详细地分析了编写安全的应用程序的方方面面。本书覆盖面较广,内容很新(包括了即将推出的Windows .NET Server和刚刚推出的Microsoft Visual Studio .NET中的一些最新的技术和特点),且有一定的深度,因为作者本身就是多年从事安全咨询和安全评审的资深专家。与许多其他安全主题图书不同,本书不仅仅告诉你什么是不安全的应用程序,也不仅仅是抱怨人们没有计划去构建安全的系统,而是完全注重实效地说明了系统是如何被攻击的,错误通常是怎样造成的,尤其重要的是,本书说明了如何构建安全的系统。无论是系统管理员、系统分析员、项目经理,还是程序设计人员,相信都可以从本书的讨论中获益匪浅。这确实是一本关于安全方面的易懂易用的好书!作为译者,我们很荣幸能将其译为中文,献给广大的读者!
参加本书翻译、录入、校对工作有:程永敬、吴嵘、庄锦山、张怀力、刘学来等。周明涛和刘江先生通审了全稿,有效地提高了书稿质量,对此深表感谢。此外,还要感谢所有给予我们帮助和支持的人们!
由于译者的水平有限,本书中可能还存在这样或那样的问题。敬请广大专家和读者指正。我们的Email是freediscovery@263.net。
2002年3月
正如本书前言中所说,教你以安全的方式设计、编写和测试应用程序是本书惟一的目的。本书从各种系统和用户代码中可能存在的安全漏洞和安全问题入手,通过大量的实例和代码,详细地分析了编写安全的应用程序的方方面面。本书覆盖面较广,内容很新(包括了即将推出的Windows .NET Server和刚刚推出的Microsoft Visual Studio .NET中的一些最新的技术和特点),且有一定的深度,因为作者本身就是多年从事安全咨询和安全评审的资深专家。与许多其他安全主题图书不同,本书不仅仅告诉你什么是不安全的应用程序,也不仅仅是抱怨人们没有计划去构建安全的系统,而是完全注重实效地说明了系统是如何被攻击的,错误通常是怎样造成的,尤其重要的是,本书说明了如何构建安全的系统。无论是系统管理员、系统分析员、项目经理,还是程序设计人员,相信都可以从本书的讨论中获益匪浅。这确实是一本关于安全方面的易懂易用的好书!作为译者,我们很荣幸能将其译为中文,献给广大的读者!
参加本书翻译、录入、校对工作有:程永敬、吴嵘、庄锦山、张怀力、刘学来等。周明涛和刘江先生通审了全稿,有效地提高了书稿质量,对此深表感谢。此外,还要感谢所有给予我们帮助和支持的人们!
由于译者的水平有限,本书中可能还存在这样或那样的问题。敬请广大专家和读者指正。我们的Email是freediscovery@263.net。
2002年3月
前言回到顶部↑
我们想写这样一本书已经很久了。我们一直致力于说服和教会人们如何加强其应用程序的安全性以避免受到攻击,然而直到最近关心系统安全性的人还不是太多。不要误解我们的意思:软件开发人员谁都想发布卓越的产品,而这里的“卓越”我们认为首先必须是安全的。
本书作者之一—Michael还记得1984年他首次在微软的Windows上编程的情形:那是一个简单的程序,与Kernighan和Ritchie的经典著作《The C Programming Language》(Prentice Hall PTR,1988年第2版)中经典的“Hello,World”程序没什么两样。当程序第一次成功编译、链接并运行的时候,他非常兴奋。我们敢肯定地说,任何在早期版本的Windows上工作过的人都会记得,那时创建一个Windows应用程序是多么的困难。Windows SDK和微软的C编译器的结合学起来并不那么容易,特别是如果你出身于像MS-DOS、PC-DOS或UNIX这些基于文本的背景时,困难就尤其明显了。
回过头来看一下1984年写的那个程序吧,它是否足够安全,可以抵御攻击呢?答案很简单,是的,它可以。它是安全的,首先是因为没有谁将基于Windows 1.x的计算机挂到任何种类的网络上,更不用说是Internet了。它是安全的,还因为那是在1984年,网络犯罪和基于Internet的肆意破坏行为还不是那么猖獗。
时代发生了多么大的变化!当今的Internet环境不可思议地充满着敌意,所有设计程序的人在设计的时候,都必须牢记在心。如果当年运行Windows 1.x的计算机挂在今天的Internet上,那么应用程序肯定会被攻击。这种应用程序在设计时可没有考虑到要运行在如此险象丛生的环境中。老实说,当时设计人员在头脑中想都没有想过安全性,因为Michael那时并不知道怎样进行编写安全的编码。现在,对于安全的代码,几乎没有人完全懂,同时也几乎没有人完全不懂。这里的“安全的代码(secure code)”并不是指安全性代码(security code)或者实现安全性功能的代码。我们指的是那种在设计上能够抵挡得住恶意攻击的代码。安全的代码同时也是健壮的代码(robust code)。
教你以安全的方式设计、编写和测试应用程序是本书惟一的目的。本书中,我们的目标就是进行不断的实践。同时也附带地让你明白代码是会受到攻击的。为了不说得过于生硬,所以让我们来重新解释一下。如果你创建了一个应用程序,这个应用程序运行在一台或多台计算机连接而成的网络上,或者由所有这些计算机及网络形成的大网—Internet上,那么你的代码将会受到攻击。
不安全的系统造成的后果很多,而且多种多样,包括产品的丢失,用户信任度的降低,以及经济上的损失。举例来说,如果有攻击者能够危及你的应用程序,比如使应用程序无法使用,你的客户就可能会流失。使用基于Internet的服务时,绝大多数人所能忍耐的等待时间上限都很短。如果这个服务无法使用,那么许多人会转向他方,而其他公司就会得到他们的光顾并大赚其钱。
对于无数软件开发公司来说,真正的问题在于,安全性看起来并不是开发过程中能产生收入的功能。正因为这样,管理层不想花钱培训开发人员如何编写安全的代码。管理层也会在安全技术上花钱,但这往往是应用程序被成功地攻破之后!而到那时,一切都太晚了,破坏已经造成。对被攻破的应用程序进行修正的代价,无论是从经济上,还是名誉上,都是高昂的。
保护财产免受偷窃和攻击已经是一条经过时间证明了的经验。我们的老祖先就已经制订了法律来惩罚那些偷盗、破坏或侵犯公民所有财产的人。简言之,人们认为某些动产和不动产属于私人,而应该抑制上述的那些行为。同样的道理也适用于数字世界,因此我们程序员的工作之一就是建立应用程序和解决方案来对数字资产进行保护。
本书中包含了一些基础的内容,这些内容应该已经在学校学习设计和构建安全的系统时学过。你可能会认为那种设计是架构设计师(architect)和项目经理的事,这是不错的,但作为开发人员和测试人员,你也应该了解要描述那些设计经得住攻击的系统应该都有哪些步骤。
我们两位作者都为了能写这本书而感到兴奋,这是因为本书是基于实际经验写成的,这些经验来自于我们长期对微软开发小组、外部的合作伙伴,以及需要开发安全的应用程序或者遭受过可怕后果的客户的培训。
谁应该读这本书
如果你正在设计应用程序,或者正在构建、测试解决方案或编写解决方案的文档,那么你需要本书。如果你的应用程序是基于Web的或者是基于Win32的,你需要这本书。如果你现在正在学习或者构建基于微软.NET框架的应用程序,那么你需要本书。简而言之,如果你的工作涉及构建应用程序,那么将会发现,从本书中可以学到很多东西。
本书的组织
本书分为五个部分。第1章和第2章组成第一部分“现代安全”,其中描述了系统为什么应该进行保护以防止攻击,还提纲挈领地介绍了设计此类系统的技术,并对其进行了分析。
本书的实质内容都在第二和第三部分。第二部分“安全的编码技术”包含了第3章到第8章的内容,对一些关键的代码编写技术进行了概括,这些技术可应用于几乎所有的应用程序。
第三部分“基于网络的应用程序”包含了四章内容(从第9章到第12章),重点集中在网络应用程序上,其中包括基于Web的应用程序。
第四部分“特殊话题”包括了三章内容(从第13章到第15章),探讨了一些其他地方讲得较少的话题,包括.NET应用程序的安全性及测试,以及安全的软件安装等。第16章讨论了一些不适合放在任何独立章节中的一些通用的指导原则。
附录部分包括了四个附录,涉及到其他各式各样的问题,包括一些危险的API,以及我们所听到的为不考虑安全性所找的一些站不住脚的借口。
第1、2、4~8以及12~14章由Michael编写。David编写了第3、9、11和15章。而第10章和第16章则由两位作者共同创作。
序言回到顶部↑
序
在我们开发Windows 2000的时候,提高安全性是要点之一。那时,我们决定在该系统发布之前,做一个非同寻常的试验,来测试其应付挑战的能力。我们设立了一个名为“Windows 2000test.com”的Windows 2000 Web服务器,把它放在那里,等着看会发生什么。在两小时之内,数以百计的人已经在尝试对它进行攻击。几天之内,有上万人在苦心研究如何攻破Windows 2000系统。
今天,只要新产品一面市,黑客们就会开始花大力气找出并利用其安全漏洞。如果该产品的开发人员不投入同样大的精力在其代码中构建安全性的话,那么黑客们将十有八九会达到目的。产品的安全性和产品的功能同等重要。但不要误会我的意思,谁也不会去购买一个没有杰出功能的产品。但是,虽然开发人员明白如何实现产品的功能,却往往不懂得如何设计和构建安全性。本书将会改变这种现状。
本书提供了用于安全的设计、安全的编码以及测试技术的实用技术,其中许多内容尚无其他文档可查。本书将使你对如何构建安全的应用程序有更为充分的理解。Michael和David分别是微软的Windows安全倡导(Secure Windows Initiative)小组和高信度计算安全性(Trustworthy Computing Security)小组的成员。他们耳闻目睹了许多第一手材料:总是会有一些很基本的编码错误会对安全性造成破坏,而他们的项目为我们提高在产品中实现同Windows 2000和Windows XP一样的安全性提供了大量的帮助。本书将带给你全新的安全技术概念。
Brian Valentine
微软公司Windows部门副总经理
在我们开发Windows 2000的时候,提高安全性是要点之一。那时,我们决定在该系统发布之前,做一个非同寻常的试验,来测试其应付挑战的能力。我们设立了一个名为“Windows 2000test.com”的Windows 2000 Web服务器,把它放在那里,等着看会发生什么。在两小时之内,数以百计的人已经在尝试对它进行攻击。几天之内,有上万人在苦心研究如何攻破Windows 2000系统。
今天,只要新产品一面市,黑客们就会开始花大力气找出并利用其安全漏洞。如果该产品的开发人员不投入同样大的精力在其代码中构建安全性的话,那么黑客们将十有八九会达到目的。产品的安全性和产品的功能同等重要。但不要误会我的意思,谁也不会去购买一个没有杰出功能的产品。但是,虽然开发人员明白如何实现产品的功能,却往往不懂得如何设计和构建安全性。本书将会改变这种现状。
本书提供了用于安全的设计、安全的编码以及测试技术的实用技术,其中许多内容尚无其他文档可查。本书将使你对如何构建安全的应用程序有更为充分的理解。Michael和David分别是微软的Windows安全倡导(Secure Windows Initiative)小组和高信度计算安全性(Trustworthy Computing Security)小组的成员。他们耳闻目睹了许多第一手材料:总是会有一些很基本的编码错误会对安全性造成破坏,而他们的项目为我们提高在产品中实现同Windows 2000和Windows XP一样的安全性提供了大量的帮助。本书将带给你全新的安全技术概念。
Brian Valentine
微软公司Windows部门副总经理
评论交流
共有51人开贴评论 86人参与评论 47人参与打分 查看
评价等级:







发表于:2005-6-20 21:27:00
全新未拆包装Delphi6 开发人员指南
由于我的浏览器的错误,导致我一个订单我提交了2次。
一摸一样的书我买了2套!China-pub.com的包装我都没有拆,
现在原包装低价转让。
Delphi6 开发人员指南 原价:118圆 ,china-pub.com 售价 92.04
我的价格:81圆包挂号邮寄费用
编写安全的代码 原价:49 china-pub.com 售价:38.22
我的价格: 30圆包挂号邮寄费用
两者一起购买 110圆包邮寄费用。你可以节约25圆。
请联系:
qq: 8594928(注明书籍)
Email: boboqd@163.com
由于我的浏览器的错误,导致我一个订单我提交了2次。
一摸一样的书我买了2套!China-pub.com的包装我都没有拆,
现在原包装低价转让。
Delphi6 开发人员指南 原价:118圆 ,china-pub.com 售价 92.04
我的价格:81圆包挂号邮寄费用
编写安全的代码 原价:49 china-pub.com 售价:38.22
我的价格: 30圆包挂号邮寄费用
两者一起购买 110圆包邮寄费用。你可以节约25圆。
请联系:
qq: 8594928(注明书籍)
Email: boboqd@163.com
| 我要写评论 |
| 查看所有评论交流(共51条) |








点击看大图






加载中...

