具体描述
《在Windows Vista上编写安全的代码》是《编写安全的代码》一书的最佳补充和扩展,是Windows Vista程序员的必备书目之一。这份权威性的指南鼓励开发者为Vista平台编写更安全的代码,从而获得更多的客户。它为开发者提供了第一手的设计思路,对针对实际的安全问题给出具体的建议。《在Windows Vista上编写安全的代码》介绍了Vista的一些新特性,包括ACLs和BitLocker等,此外它还丰富了一些以往的概念,例如防火墙和认证。
作者简介
Michael Howard,是Microsoft Security Engineering团队的高级安全程序主管,是该公司安全相关过程改进的架构师。他与David LeBlanc合著完成多部安全类专著,包括获奖的《编写安全的代码》,“19DeadlySins of Software Security”,以及“the Security Development Lifecycle”。他是IEEE Security and Privacy的一名编辑,也是Microsoft Press Secure Software Development series的丛书编辑。
David LeBlanc是Microsoft Office Division’s Trustworthy Computing团队里的资深开发员,还为Office提供与安全相关的建议,并与MichaeIHoward合著完成多部安全类专著。他在安全行业的许多方面都有所涉猎,从提供反欺诈咨询、领导屡获大奖的网络安全评估工具开发团队,到为Microsoft的网络安全团队提供渗透测试指导。他还是Trustworthy Computing Initiative团队的奠基人之一。
目录信息
1.1 Windows Vista质量阀 3
1.2 用SAL注解所有的C/C++字符串缓冲区 4
1.2.1 SAL示例 5
1.2.2 如何在已有的代码里使用SAL 9
1.3 从代码库中剔除被取缔的API 10
1.4 从代码库中剔除被取缔的加密算法 11
1.5 通过静态分析发现并修复bug 12
1.5.1 与/analyze相关的警告 12
1.5.2 Application Verifier警告 13
1.5.3 FxCop警告 14
1.6 用/GS选项编译UnmanagedC/C++程序,并用/SafeSEH,/DynamicBase和/NXCompat选项进行连接 14
1.7 行动起来 14
1.8 参考资料 15
第2章 用户账号控制、令牌及完整性级别 16
2.1 深入UAC 18
2.1.1 从初级用户令牌开始 18
2.1.2 提升为管理员 23
2.1.3 一个小小的变种:“具有认可模式的管理员” 23
2.1.4 最新的Windows Vista令牌格式 25
2.1.5 确定一个进程是否被提升 25
2.1.6 怎样要求一个应用程序以管理员身份运行 27
2.1.7 使应用程序提示凭证(密码)或同意 31
2.1.8 用COM Elevation Moniker启动COM组件 32
2.1.9 启动提升的可控代码应用程序 34
2.2 用户接口需要考虑的事项 34
2.3 虚拟化 35
2.3.1 怎样在你的应用程序中禁用虚拟化 39
2.4 完整性级别 40
2.4.1 完整性设置的规则 51
2.4.2 NW、NR和NX Masks 51
2.4.3 使用完整性级别的防护模型 52
2.5 Windows Vista里调试应用程序的兼容性问题 53
2.5.1 File Warnings 54
2.5.2 Registry Warnings 54
2.5.3 INI Warnings 54
2.5.4 Token Warnings 54
2.5.5 Privilege Warnings 54
2.5.6 Name Space Warnings 54
2.5.7 Other Objects Warnings 55
2.5.8 Process Warnings 55
2.6 代码签名的重要性 55
2.7 Windows Vista里的新特权 56
2.8 行动起来 57
2.9 参考资料 57
第3章 缓冲区溢出防护 60
3.1 ASLR 62
3.1.1 ASLR的限制 65
3.1.2 性能和兼容性 65
3.2 栈随机化 66
3.2.1 性能和兼容性 67
3.3 堆防护措施 67
3.4 NX 73
3.4.1 性能和兼容性问题 76
3.5 /GS 79
3.6 SafeSEH 83
3.7 小结 89
3.8 行动起来 90
3.9 参考资料 90
第4章 网络防护措施 91
4.1 IPv6概述 93
4.1.1 Teredo 95
4.2 网络列表管理器 98
4.3 Windows Vista RSS平台 99
4.4 Winsock安全套接字扩展 101
4.5 更安全的Windows防火墙 103
4.5.1 全局防火墙设置 103
4.5.2 创建规则 106
4.5.3 与规则组共事 113
4.6 行动起来 115
4.7 参考资料 115
第5章 创建安全又能复原的服务 117
5.1 服务概述 118
5.2 服务账号 119
5.3 减少特权 123
5.4 控制网络访问 130
5.5 与桌面进行通信 133
5.5.1 Simple Message Boxes 135
5.5.2 共享内存 135
5.5.3 命名管道 136
5.5.4 套接字 141
5.5.5 RPC/COM 142
5.6 实践出真知 142
5.7 行动起来 143
5.8 参考资料 144
第6章 IE7的防护措施 145
6.1 普及的防护措施 147
6.1.1 ActiveX opt-in 147
6.1.2 保护模式 148
6.1.3 数据执行保护 152
6.2 cURL和IUri接口 155
6.3 锁住你的ActiveX控件 158
6.4 你应当知道的关于IE7的其他事情 158
6.4.1 禁止访问剪贴板 158
6.4.2 脚本URL 158
6.4.3 Good-bye PCT and SSL2 (and Good Riddance), Hello AES! 159
6.4.4 Window Origin 159
6.5 行动起来 159
6.6 参考资料 160
第7章 加密方面的增强 162
7.1 内核模式和用户模式支持 163
7.2 敏捷加密 164
7.2.1 CNG中的敏捷加密 165
7.3 CNG中的新算法 167
7.4 使用CNG 168
7.4.1 加密数据 169
7.4.2 Hashing数据 169
7.4.3 MACing数据 170
7.4.4 生成随机数 170
7.5 CNG和FIPS 171
7.6 改良的审计 172
7.7 CNG缺少的东西 173
7.8 SSL/TLS改进 173
7.8.1 SSL/TLS撤销检查和OCSP 175
7.9 Windows Vista里的根证书 177
7.10 Windows Vista拒绝的加密功能 178
7.11 行动起来 179
7.12 参考资料 179
第8章 认证与授权 181
8.1 WindowsCardSpace及Information Cards 181
8.1.1 Information Cards数据流 182
8.1.2 WindowsCardSpace和网络钩鱼 183
8.1.3 CardSpace和网络钓鱼示例 185
8.1.4 看Information Cards的实际使用效果 187
8.1.5 Information Cards包含什么内容 187
8.1.6 通过编程的方式访问Information Cards 188
8.1.7 CardSpace小结 190
8.2 图像识别和授权改变 191
8.3 Owner SID改变 191
8.4 行动起来 193
8.5 参考资料 193
第9章 其他的防护措施和安全技术 195
9.1 在应用程序中增加父母监控 196
9.1.1 代码 197
9.1.2 时间限制 198
9.1.3 The 450 Error 199
9.1.4 检测是否启用了“Block file downloads” 199
9.1.5 为你的应用程序或URL关闭过滤 199
9.1.6 记录事件 200
9.2 Windows Defender APIs 201
9.2.1 签名你的代码 202
9.2.2 请求加入Windows Defender “Known or Not Yet Classified” 列表 203
9.3 新的Credential User Interface API 203
9.4 使用Security Event Log 206
9.5 指针编码 207
9.6 内核模式调试相关 211
9.7 通过编程访问TPM 211
9.7.1 对TPM的低级访问 214
9.8 Windows SideBar和Gadget方面的安全性考虑 219
9.9 参考资料 220
· · · · · · (收起)
读后感
在线阅读本书 Get the definitive guide to writing more-secure code for Windows Vistafrom the authors of the award-winning Writing Secure Code, Michael Howard and David LeBlanc. This reference is ideal for developers who understand the fundamentals of Window...
在线阅读本书 Get the definitive guide to writing more-secure code for Windows Vistafrom the authors of the award-winning Writing Secure Code, Michael Howard and David LeBlanc. This reference is ideal for developers who understand the fundamentals of Window...
在线阅读本书 Get the definitive guide to writing more-secure code for Windows Vistafrom the authors of the award-winning Writing Secure Code, Michael Howard and David LeBlanc. This reference is ideal for developers who understand the fundamentals of Window...
在线阅读本书 Get the definitive guide to writing more-secure code for Windows Vistafrom the authors of the award-winning Writing Secure Code, Michael Howard and David LeBlanc. This reference is ideal for developers who understand the fundamentals of Window...
在线阅读本书 Get the definitive guide to writing more-secure code for Windows Vistafrom the authors of the award-winning Writing Secure Code, Michael Howard and David LeBlanc. This reference is ideal for developers who understand the fundamentals of Window...
用户评价
拿到这本厚厚的书,我的第一印象是它似乎更侧重于某种特定安全范畴的深度挖掘,而非覆盖整个Windows Vista的安全生态。我购买它的主要动机是想学习如何应对当时新兴的、针对Vista虚拟化和完整性级别(Integrity Levels)的攻击手法。例如,如何编写一个能够稳定运行在低权限Token下的应用程序,同时又能在必要时通过恰当的UAC提示来请求高权限,这个交互过程中的安全边界处理是极其微妙的。我期望书中能够详细剖析Win32 API层面,尤其是那些与进程间通信(IPC)相关的安全句柄继承、对象命名空间隔离等方面的最佳实践。我原本也期待能找到一些关于Vista驱动程序模型(WDDM/KMDF)安全编程的章节,因为内核级的漏洞往往后果最为严重,但在阅读过程中,我感觉这些深入到操作系统核心的安全模型讨论似乎并未得到足够的篇幅。这本书如果侧重于用户态应用程序的安全防护,那么它可能忽略了Vista安全体系中至关重要的一环——内核模式的安全保障。
这本书的篇幅似乎在强调某种特定类型的漏洞,让我感觉在其他同样重要的安全领域有所侧重不足。比如,我热衷于研究应用程序的供应链安全问题,我原本期望书中能详细讨论Vista环境下,如何安全地加载和验证第三方DLL,如何防范DLL劫持攻击,特别是针对那些需要高权限才能安装的组件。Vista引入了更严格的数字签名和验证流程,我希望能看到如何正确地使用这些工具来保护程序集的完整性,并避免应用程序无意中加载了被篡改的组件。如果这本书将大量篇幅放在描述常见的Web应用漏洞(比如SQL注入或XSS)如何在Vista这个桌面系统上被“移植”或“模拟”出来,而不是专注于桌面系统本身的安全特性,那么它就偏离了书名的核心承诺。我需要的是如何在这个特定的操作系统环境内,通过系统调用和API的正确使用来构建一道坚不可摧的屏障,而不是泛泛地讨论网络安全领域的问题。
说实话,这本书的某些章节给我的感觉,更像是对一般软件工程安全原则的重述,而不是针对Windows Vista特有安全机制的量身定制教程。我购买这本书时,最期待的是能看到如何利用Vista引入的新型内存保护机制,比如Address Space Layout Randomization(ASLR)在Vista下的具体实现细节,以及开发者如何调整代码布局以最大化ASLR的防御效果。我原本希望能看到大量使用早期版本的Visual Studio配合Vista SDK进行编译和调试的实战案例,特别是关于如何使用安全开发生命周期(SDL)的最佳实践来指导Vista项目的代码审查流程。然而,书中对于这些前沿技术的探讨显得有些蜻蜓点水。我更希望看到的是针对Vista特定API调用失败时,默认返回的错误码及其安全含义的深入分析,以及如何构建能够抵抗时间竞争(TOCTOU)攻击的系统调用序列。如果这些关于Vista底层安全特性的具体实现没有被充分挖掘,那么这本书的价值就仅仅停留在通用安全准则层面,与特定操作系统的关联性就不够强了。
我一直在寻找一本能够清晰阐述Vista安全模型演进脉络的权威著作,特别是想了解它在网络安全方面做了哪些超越XP的改进。我原以为这本书会详尽介绍IPsec在Vista中的配置与应用程序集成,或者如何安全地使用Windows Filtering Platform (WFP) 来控制网络流量,以及应用程序如何避免被WFP规则绕过。这些都是Vista时代网络安全防御的关键点。此外,考虑到Vista对用户数据隐私的日益重视,我非常希望书中能有关于加密存储的最佳实践,比如如何使用Windows CNG(Cryptography: Next Generation)替代旧的CryptoAPI,以及在应用程序中实现零知识证明或安全密码存储的范例。如果这本书的重点只是停留在文件系统权限管理和基本的输入验证上,而没有深入到Vista引入的这些现代加密和网络安全框架,那么它对于一个寻求高阶安全编程指导的读者来说,深度是远远不够的,感觉更像是一本为初级开发者准备的“安全入门”读物,而不是面向特定平台深入优化的指南。
这本书的书名是《在Windows Vista上编写安全的代码》,我拿到它的时候,是冲着Vista这个特定的操作系统去的,毕竟那是微软一个重要的过渡版本,许多安全实践和API的演进都在那个时期得到了强化和明确。我原本期待能深入了解Vista在用户账户控制(UAC)、内核层面的安全沙箱机制,以及如何利用当时最新的.NET Framework版本来构建不容易被注入或越权操作的应用程序。特别是Vista引入的很多安全审计和日志记录的新特性,我非常希望书中能提供实用的C++或C#代码示例,指导开发者如何正确地处理权限提升请求,避免常见的缓冲区溢出和格式化字符串漏洞,同时还要确保代码在那个特定操作系统环境下能高效运行。我翻阅目录时,特别留意了关于数据保护和加密的章节,想看看它是否覆盖了当时微软力推的DPAPI(Data Protection API)在Vista下的新用法,或者如何针对Vista的强加密算法进行适配。如果这本书真的专注于Vista的安全实践,那么它应该能成为那个特定时代开发者手中宝贵的参考手册,解决那些当时特有的、与XP截然不同的安全挑战。我希望看到的是扎实的底层细节,而不是泛泛而谈的安全理念。
编写安全的代码补充版,平台相关
编写安全的代码补充版,平台相关
编写安全的代码补充版,平台相关
编写安全的代码补充版,平台相关
编写安全的代码补充版,平台相关