编写安全的代码MichaelHoward,Dpdf下载pdf下载

编写安全的代码MichaelHoward,D百度网盘pdf下载

作者:
简介:本篇主要提供编写安全的代码MichaelHoward,Dpdf下载
出版社:奥维博世图书专营店
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

 书名:  编写安全的代码(第2版)[图书]|22278
 图书定价: 55元
 图书作者: (美)Michael Howard,David LeBlanc
 出版社:  机械工业出版社
 出版日期:  2005/1/1 0:00:00
 ISBN号: 9787111112105
 开本: 16开
 页数: 480
 版次: 2-1
 作者简介
Michael Howard《Designing SecureWeb-Based for Microsoft Windows 2000》的作者,致力于安全设计、安全编程和安全测试——这些都是Microsoft Windows开发小组中“安全Windows倡导活动”的一部分。他也是Microsoft安全系列推广活动的架构师之一。David LeBlancMicrosoft可信计算倡导活动的关键成员,致力于网络安全、编写网络审计工具、内部渗透测试的推广等。
 内容简介

  "在过去的20年间,计算机已经彻底改变了我们的生活方式。现在,从电信业、银行业到运输业,计算机已经成为所有重要基础设施的组成部分;另外,计算机中还保存有大量的敏感数据,如个人健康记录和财务记录。为了我们的未来,现在编写安全的软件比以往更为重要,每个软件开发人员都必须学习如何将安全性集成到项目当中。微软的每个人都必须阅读《编写安全的代码》这本书,它有助于我们向客户宣传"可信计算"模式,并为开发人员正确处理安全性提供必要的基础。"
--比尔·盖茨 微软公司首席软件架构师

  每年我们都会由于黑客攻击网络应用程序、窃取信用卡密码、破坏Web站点、造成网速变慢等而花费无数的金钱,并带来无尽的烦恼。通过这本引人入胜、令人耳目一新的书,读者可以学到各种安全技术来防范黑客攻击。现在,这本书已经增加了**的安全威胁以及从微软最近的安全推广活动中获取的教训。读者将学习到如何在整个开发过程中--从设计安全的应用程序到编写健壮的代码--加固自己的应用程序,从而能够经受住探查安全隐患的测试应用程序的重复攻击。书中解释了安全法则、策略和编码技术,这些技术有助于增强代码的抗攻击能力。本书的两位作者久经沙场,他们曾解决过行业中最为棘手的一些安全问题。书中还提供了许多例子代码来说明特定的开发技术。
  主要内容
  现代安全:安全系统的需求,以及赖以生存的安全法则。新内容:使用安全编码技术进行开发,威胁建模。
  安全编码技术:头号公敌--缓冲区溢出,确定适当的访问控制,以最小特权运行,加密的弱点,保护机密数据,以及规范表示的问题。新内容:防止有害输入,解决数据库输入问题,基于Web的错误(包括跨站点脚本),以及国际化问题。
  更多的安全编码技术:Socket安全,安全DCOM、ActiveX和RPC应用程序,防范拒绝服务攻击,以及文件系统问题。新内容:使用安全编码技术开发Microsoft.NET代码。
特殊话题:严格的测试安全应用程序的过程,安全的软件安装,通用的好做法。新内容:进行一次安全代码审查,在应用程序中创建隐私策略,编写完整、清晰、一致的安全文档以及有意义的错误消息。
  本书分为五部分。第一部分概括说明了保护系统安全的意义,以及设计安全系统的原则和所采用的技术,第二部分概括介绍了几乎适用于任何应用程序的重要编码技术,第三部分重点介绍厂网络应用程序和.Net代码安全;第四部分讨论的安全问题在一般图书中少有论及,如测试、进行安全代码审查、隐私策略以及安全的软件安装等问题,第五部分是附录,分别介绍危险的API以及分别适用于设计人员、开发人员和测试人员的安全措施核对清单。
  本书第1版曾作为Windows开发组全体成员的必读教材,而第2版更是总结了在针对微软产品的多次安全活动中的许多新发现。本书曾被比尔·盖茨指定为微软员工必读书籍,是软件设计、开发、测试,系统管理等人员必读的优秀教材。

 目录

出版者的话
专家指导委员会
前言
第一部分 现代安全
第1章 对安全系统的需求
1.1 "疯狂的Web网"上的应用程序
1.2 可信计算的需要
1.3 让每个人都参与进来
1.3.1 巧妙地向企业推销安全
1.3.2 使用搞破坏的方法
1.4 灌输安全意识的一些主意
1.4.1 让老板发一封电子邮件
1.4.2 任命安全宣传员
1.5 攻击者的优势和防御者的劣势
1.5.1 因素1:防御者必须对所有的环节都进行防御,而攻击者可以选择最薄弱的环节
1.5.2 因素2:防御者只能针对已知的攻击进行防御,而攻击者则可以探测未知的漏洞
1.5.3 因素3:防御者必须永远保持警惕,而攻击者却可以随意"罢工"
1.5.4 因素4:防御者的活动必须遵循相应的规则,而攻击者则可以采用一些卑鄙的手段
1.6 本章小结
第2章 主动的安全开发过程
2.1 不断改进开发过程
2.2 安全教育的角色
2.2.1 强制培训的阻力
2.2.2 不断更新的培训
2.2.3 安全科学的进步
2.2.4 教育证明"更多的眼睛"不代表更安全
2.2.5 有力的证据1
2.3 设计阶段
2.3.1 面试期间的安全问题
2.3.2 定义产品的安全目标
2.3.3 安全是产品的一种特性
2.3.4 要有足够的时间考虑安全问题
2.3.5 安全的设计源于威胁建模
2.3.6 终结不安全的特性
2.3.7 设置bug门槛
2.3.8 安全小组审查
2.4 开发阶段
2.4.1 只有核心成员能够查看新代码(签字确认)
2.4.2 新代码的同级安全审查(签字确认)
2.4.3 定义安全的编码准则
2.4.4 审查旧的缺陷
2.4.5 外部安全审查
2.4.6 安全推动活动
2.4.7 留心自己的错误数量
2.4.8 记录错误
2.4.9 没有惊喜,也没有圣诞节彩蛋!
2.5 测试阶段
2.6 发行和维护阶段
2.6.1 如何知道已完成
2.6.2 响应过程
2.6.3 责任制
2.7 本章小结
第3章 赖以生存的安全法则
3.1 设计安全、默认安全和部署安全
3.1.1 设计安全
3.1.2 默认安全
3.1.3 部署安全
3.2 安全法则
3.2.1 从错误中吸取教训
3.2.2 尽可能缩小攻击面
3.2.3 采用安全的默认设置
3.2.4 纵深防御
3.2.5 使用最小特权
3.2.6 向下兼容总是不安全的
3.2.7 假设外部系统是不安全的
3.2.8 失败时的应对计划
3.2.9 失败时进入安全模式
3.2.10 切记:安全特性不等于安全的特性
3.2.11 决不要将安全仅维系于隐匿
3.2.12 不要将代码与数据混在一起
3.2.13 正确地解决安全问题
3.3 本章小结
第4章 威胁建模
4.1 通过威胁建模进行安全的设计
4.1.1 成立威胁建模小组
4.1.2 分解应用程序
4.1.3 确定系统所面临的威胁
4.1.4 以风险递减的顺序给威胁分级
4.1.5 选择应付威胁的方法
4.1.6 选择缓和威胁的方法
4.2 安全技术
4.2.1 身份认证
4.2.2 授权
4.2.3 防篡改和增强保密性的技术
4.2.4 保护秘密或最好不要保存秘密
4.2.5 加密、散列、MAC和数字签名
4.2.6 审核
4.2.7 过滤、节流和服务质量
4.2.8 最小特权
4.3 缓和工资表范例程序的威胁
4.4 各种威胁及解决方案
4.5 本章小结
第二部分 安全的编码技术
第5章 头号公敌:缓冲区溢出
5.1 堆栈溢出
5.2 堆溢出
5.3 数组下标错误
5.4 格式字符串错误
5.5 Unicode和ANSI缓冲区大小不匹配
5.6 预防缓冲区溢出
5.6.1 字符串处理方面的安全问题
5.6.2 关于字符串处理函数的警告
5.7 VisualC++.NET的/GS选项
5.8 本章小结
第6章 确定适当的访问控制
6.1 ACL何以如此重要
6.2 ACL的组成
6.3 选择好的ACL的方法
6.4 创建ACL
6.4.1 在WindowsNT4中创建ACL
6.4.2 在Windows 2000中创建ACL
6.4.3 用活动模板库创建ACL
6.5 对ACE进行正确的排序
6.6 留意终端服务器和远程桌面的SID
6.7 NULLDACL和其他的危险ACE类型
6.7.1 NULLDACL和审核
6.7.2 危险的ACE类型
6.7.3 如果无法改变NULLDACL该怎么办
6.8 其他的访问控制机制
6.8.1 .NET框架角色
6.8.2 COM+角色
6.8.3 IP限制
6.8.4 SQLServer触发器和权限
6.8.5 一个医学方面的示例
6.8.6 关于访问控制机制的重要说明
6.9 本章小结
第7章 以最小特权运行
7.1 现实中的最小特权
7.1.1 病毒和特洛伊木马
7.1.2 破坏Web服务器
7.2 访问控制简介
7.3 特权简介
7.3.1 SeBackupPrivilege问题
7.3.2 SeRestorePrivilege问题
7.3.3 SeDebugPrivilege问题
7.3.4 SeTcbPrivilege问题
7.3.5 SeAssignPrimaryTokenPrivilege和SeIncreaseQuotaPrivilegeI司题
7.3.6 SeLoadDriverPrivilege问题
7.3.7 SeRemoteShutdownPrivilege问题
7.3.8 SeTakeOwnershipPrivilege问题
7.4 令牌简介
7.5 令牌、特权、SID,ACL和进程之间的关系
7.6 应用程序要求提高特权的三个理由
7.6.1 ACL问题
7.6.2 特权问题
7.6.3 使用LSA秘密
7.7 解决提高特权的问题
7.7.1 解决ACL问题
7.7.2 解决特权问题
7.7.3 解决LSA问题
7.8 确定适当特权的过程
7.8.1 步骤1:找到应用程序使用的资源
7.8.2 步骤2:找到应用程序使用的特权API
7.8.3 步骤3:哪一个帐户是必需的
7.8.4 步骤4:获取令牌的内容
7.8.5 步骤5:所有SID和特权是否都是必需的
7.8.6 步骤6:调整令牌
7.9 WindowsXP和WindowsServer2003中的低特权级服务帐户
7.10 模拟特权和WindowsServer2003
7.11 调试最小特权问题
7.11.1 为什么以普通用户运行时应用程序失败
7.11.2 如何判断应用程序失败的原因
7.12 本章小结
第8章 加密的弱点
8.1 使用不良的随机数
8.1.1 问题:rand函数
8.1.2 Win32中的加密随机数
8.1.3 托管代码中的加密随机数
8.1.4 Web页中的加密随机数
8.2 使用口令生成加密密钥
8.3 密钥管理问题
8.3.1 长期密钥和短期密钥
8.3.2 使用合适的密钥长度保护数据
8.3.3 将密钥保存在靠近数据源的地方
8.3.4 密钥交换问题
8.4 创建自己的加密函数
8.5 使用相同的流密码加密密钥
8.5.1 人们为什么使用流密码
8.5.2 流密码的缺陷
8.5.3 如果必须使用相同的密钥怎么办
8.6 针对流密码的位替换攻击
8.6.1 解决位替换攻击
8.6.2 何时使用散列、密钥散列或数字签名
8.7 重用明文和密文的缓冲区
8.8 使用加密技术缓和威胁
8.9 在文档中说明你使用的加密算法
8.10 本章小结
第9章 保护机密数据
9.1 攻击机密数据
9.2 有时并不需要保存秘密
9.2.1 创建干扰散列
9.2.2 使用PKCS#5增加攻击的难度
9.3 获取用户的秘密信息
9.4 保护Windows 2000及其以后版本中的秘密信息
9.5 保护WindowsNT4中的秘密信息
9.6 保护Windows95/98/ME/...
 编辑推荐
每年我们都会由于黑客攻击网络应用程序、窃取信用卡密码、破坏Wod站点、造成网速变慢等而花费无数的金钱,并带来无尽的烦恼。通过这本引人入胜、令人耳目一新的书,读者可以学到各种安全技术来防范黑客攻击。现在,这本书已经增加了新安全威胁以及从微软最近的安全推广活动中获取的教训。读者将学习到如何到整个发展过程中——从设计安全的应用程序到编写健壮的代码——加固自己的应用程序,从而能够经受住探进安全隐患的测试应用程序的重复攻击。书中解释了安全法则、策略和编码技术,这些技术有助于增强代码的抗攻击能力。本书的两位作者久经沙场,他们曾解决过行业中棘手的一些安全问题。书中还提供了许多例子代码来说明特定的开发技术。