编辑推荐
全面、系统、深刻揭示.NET平台的安全机制和工作原理,为构建安全的.NET应用以及ASP.NET、WCF、WPF、Silverlight、Open XML和WIF等应用提供极好实践指导
内容简介
作为.NET程序员、.NET应用架构师和.NET安全工作人员,如何才能开发和设计出安全的.NET应用?如何才能维护和保证.NET应用系统的安全性?本书是资深.NET专家和安全专家多年工作经验的结晶,深刻揭示了.NET系统(涵盖.NET平台本身、ASP.NET、WCF、Silverlight、Windows Azure、 Open XML和WIF等)的安全特性及其工作原理,系统而全面地讲解了构建安全的.NET应用所必须掌握的所有理论知识,并包含大量优佳实践。
全书共分为五个部分。第一部分:.NET安全基础,透彻讲解了.NET体系结构、程序集与反射、应用程序域和CLR寄宿等核心技术,这部分内容是.NET架构的核心,同时也是理解.NET底层安全机制的基础;第二部分:.NET平台安全性,深入分析了代码访问的安全性和基于角色的安全性的原理,这部分内容既是.NET应用框架安全性的基础,也是整个.NET平台体系安全性的核心;第三部分:数据安全,深刻阐述了数据加密、数据存储和数据通信的安全性,这部分内容介于.NET平台底层安全性与.NET应用安全性之间,是联系二者的纽带;第四部分:.NET应用安全性,全面讲解.NET平台下ASP.NET、WCF、WPF、Silverlight和Open XML等常用框架和技术的安全机制与原理;第五部分:高级扩展,重点介绍了新的WIF框架和Windows Azure的安全性,这是.NET安全领域未来的重心之一。
本书是构建安全.NET应用的百科全书,适合所有关注和学习.NET安全的读者阅读。
作者简介
杨文海(笔名:玄魂)资深.NET开发工程师(常以“代码狂人”自居)和安全技术专家,有多年.NET开发经验,对.NET平台以及ASP.NET、WPF、WCF、Silverlight、Open XML、WIF等技术的底层原理和安全机制有深入的研究。崇尚黑客精神,活跃于国内外各大安全论坛,教学相长,乐此不疲。目前致力于打造最好的.NET安全编程框架,传播真正的黑客精神。
精彩书评
随着互联网及其相关技术的成熟,以及各类社交网站和电子商务网站的不断崛起,我们的生活的网络化程度随之不断加深,与我们个人的隐私相关的各种数据都被“搬”到了网上。对于为我们提供各类服务的网站来说,保障用户信息的安全性已成为他们重要和头疼的工作之一。要确保网站的安全性,根本上还是要从构建网站系统的底层技术和安全框架抓起。本书是.NET技术人员的福音,它系统讲解了.NET安全技术的方方面面,能为我们构建各种类型的.NET应用提供完善的实践指导,既可以作为深入学习.NET安全技术的宝贵资料,又可以作为开发和架构.NET应用的案头备查手册,强烈推荐。
—— 51CTO(中国领先的IT技术网站)
2011年,国内安全领域新闻莫过于数十家网站的用户数据被泄露的事件了。这件事情在当时影响极为广泛,它促使了国内的互联网企业重新思考网站安全的重要性并纷纷加强了网站的安全建设。网站安全的根基在于它的架构和具体实现,架构和实现过程中是否充分利用了技术的手段来保障安全性直接决定了网站是否安全可靠。如果你打算用.NET技术开发网站或相关的应用,抑或是你要负责维护用.NET技术开发的网站和应用的安全性,本书将为你提供全面的指导,它几乎讲解了.NET技术安全性的方方面面,值得学习和参考!
—— 马伟 资深微软技术专家和微软MVP/热销书《ASP.NET 4指南》作者
安全永远是IT领域重要、热门的话题之一,它是IT产品和服务的核心。对于软件产品而言,它的安全性在最初的架构、设计和实现过程中就已经决定了,也就是说软件的安全性其实掌握在架构师和程序员手里。如果你是一位.NET程序员或架构师,你必须了解.NET平台的安全机制,以及各种.NET应用涉及的安全技术的细节,只有这样才能为你开发或架构的系统提供安全上的技术保障。目前市面上系统、深入讲解.NET安全知识的书不多,本书不可多得。
—— 郝冠军 资深微软技术专家和微软MVP/热销书《ASP.NET本质论》作者
目录
前言
第一部分 .NET安全基础
第1章 .NET 体系结构
1.1公共语言运行时
1.2公共类型系统
1.2.1CTS基本结构
1.2.2公共语言规范
1.3中间语言
1.3.1托管PE文件
1.3.2元数据
1.3.3IL常用指令
1.3.4IL与代码验证
1.4基础类库和框架类库
1.4.1BCL 基本命名空间
1.4.2.NET Framework 4.0中对BCL的更新
1.4.3FCL命名空间
1.5即时编译和预编译
1.6动态语言运行时
1.7本章小结
第2章 程序集与反射
2.1程序集
2.1.1模块的操作
2.1.2程序集概念
2.1.3强名称程序集
2.1.4共享程序集
2.1.5创建多文件程序集
2.2使用反射操作程序集
2.2.1反射程序集
2.2.2加载和卸载程序集
2.2.3动态创建程序集
2.3本章小结
第3章 应用程序域与CLR寄宿
3.1应用程序域基础
3.1.1 应用程序域的特点
3.1.2创建应用程序域
3.1.3卸载应用程序域
3.2CLR寄宿
3.2.1核心组件MSCOREE.DLL
3.2.2托管exe文件的加载和执行
3.2.3ASP.NET Web窗体和Web Service
3.3高级宿主控制
3.3.1托管宿主
3.3.2托管环境下的线程注入实例
3.4本章小结
第二部分 .NET平台级安全性
第4章 代码访问安全性
4.1代码访问安全性机制
4.1.1代码访问安全性机制的作用
4.1.2工作方式
4.1.3安全性语法
4.2代码组
4.2.1对代码组的管理
4.2.2成员条件
4.2.3属性
4.3权限和权限集
4.3.1权限操作的基本概念
4.3.2.NET提供的代码访问权限
4.3.3操作权限集
4.4代码访问安全性编程实践
4.4.1实现自定义权限的构造函数
4.4.2实现属性类
4.4.3安装到安全策略中
4.5本章小结
第5章 基于角色的安全性
5.1.NET Framework基于角色的安全性
5.2基于角色的安全性编程实战
5.3主体和标识
5.3.1主体对象
5.3.2标识对象
5.4安全检查
5.4.1基于角色的安全性权限对象
5.4.2命令式安全检查
5.4.3声明式安全检查
5.4.4直接访问主体对象
5.5本章小结
第三部分 数据安全
第6章 数据加密
6.1加密技术简介
6.2对称加密
6.2.1对称加密原理
6.2.2对称加密算法
6.2.3.NET对称加密体系
6.2.4对称加密实践
6.3非对称加密
6.3.1非对称加密原理
6.3.2非对称加密算法
6.3.3.NET 非对称加密体系
6.3.4非对称加密实践
6.4消息摘要和Hash算法
6.4.1Hash原理
6.4.2Hash算法
6.4.3.NET中的Hash算法
6.4.4消息摘要编程实例
6.5数字签名和数字证书
6.5.1数字签名
6.5.2使用.NET进行数字签名
6.5.3数字证书
6.5.4在.NET中操作数字证书
6.6本章小结
第7章 数据存储安全
7.1磁盘文件安全
7.1.1文件的基本操作
7.1.2文件和目录的访问控制
7.1.3安全删除数据
7.1.4文件加密/解密
7.2数据库安全
7.2.1SQL Server的CLR集成
7.2.2CLR集成的功能
7.2.3编译过程
7.3SQL Server的CLR集成安全性
7.3.1CLR集成代码访问的安全性
7.3.2宿主保护特性和CLR集成编程
7.3.3CLR 集成安全性中的链接
7.3.4模拟和CLR集成安全性
7.3.5允许部分可信任的调用方
7.3.6应用程序域和CLR集成安全性
7.4本章小结
第8章 数据通信安全
8.1SSL原理及应用
8.1.1SSL协议体系结构
8.1.2配置HTTPS
8.1.3在.NET开发中处理HTTPS
8.2会话状态安全
8.2.1会话状态安全基础
8.2.2会话状态安全攻略
8.3本章小结
第四部分 .NET应用安全
第9章 应用程序保护
9.1反编译
9.1.1反编译工具Reflector
9.1.2.NET反编译原理
9.2强名称
9.2.1使用强名称保护代码完整性
9.2.2引用强名称签名的程序集
9.2.3强名称的脆弱性
9.2.4保护强名称
9.3代码混淆
9.3.1名称混淆
9.3.2流程混淆
9.3.3语法混淆
9.4加壳
9.5本章小结
第10章 ASP.NET应用安全
10.1ASP.NET安全性工作原理
10.1.1ASP.NET安全性体系结构
10.1.2ASP.NET安全数据流
10.1.3ASP.NET模拟
10.1.4ASP.NET身份验证
10.1.5ASP.NET授权
10.1.6ASP.NET SQL Server注册工具
10.2ASP.NET成员资格
10.2.1ASP.NET成员资格的功能
10.2.2ASP.NET成员资格类
10.2.3配置成员资格
10.2.4成员资格的应用
10.2.5自定义成员资格提供程序
10.2.6WCF身份验证服务
10.3ASP.NET角色管理
10.3.1ASP.NET角色和访问规则
10.3.2ASP.NET角色管理类
10.3.3ASP.NET角色管理提供程序
10.3.4自定义ASP.NET角色管理提供程序
10.3.5WCF角色服务
10.4受保护配置
10.4.1管理受保护配置
10.4.2受保护配置提供程序
10.4.3RSA密钥容器
10.5本章小结
第11章 WCF应用安全
11.1WCF安全基本概念
11.1.1绑定
11.1.2安全模式
11.1.3身份验证凭据
11.1.4保护级别
11.1.5授权
11.1.6模拟
11.2WCF局域网安全
11.2.1NetTcpBinding Transport安全模式
11.2.2NetTcpBinding Message安全模式
11.2.3局域网绑定安全
11.2.4局域网环境下的授权策略
11.3WCF互联网安全
11.3.1BasicHttpBinding示例
11.3.2BasicHttpBinding安全项
11.3.3BasicHttpBinding安全应用
11.3.4WsHttpBinding简介
11.4WCF安全认证流程
11.5本章小结
第12章 WPF应用安全
12.1WPF应用程序
12.1.1WPF独立应用程序
12.1.2WPF浏览器应用程序
12.2WPF应用程序安全性
12.2.1安全导航
12.2.2Web浏览安全设置
12.2.3安全沙箱
12.2.4部分信任安全
12.2.5部分信任安全策略
12.2.6松散XAML文件的沙箱行为
12.3部分受信任代码的库调用
12.4本章小结
第13章 Silverlight应用安全
13.1Silverlight运行机制
13.1.1Silverlight运行环境
13.1.2Silverlight架构
13.1.3CoreCLR安全模型
13.2Silverlight运行在沙箱中
13.3透明模型
13.3.1透明代码的调用
13.3.2透明代码、SafeCritical代码和关键代码的比较
13.3.3Silverlight透明模型的优势
13.4网络通信
13.4.1基本HTTP功能
13.4.2HTTP调用
13.4.3跨域通信
13.4.4网络安全访问限制
13.4.5URL访问限制
13.5Silverlight安全策略
13.5.1XSS问题
13.5.2代码隔离
13.5.3用户数据保护
13.5.4保护xap文件
13.6本章小结
第14章 Open XML应用安全
14.1Open XML规范
14.1.1文档格式
14.1.2开放打包协定
14.1.3Open XML标记语言
14.2Open XML开发基础
14.2.1操作ZIP
14.2.2操作XML
14.2.3Open XML API
14.3Open XML应用安全
14.3.1宏安全
14.3.2OLE机制
14.3.3隐藏数据
14.3.4文档校验
14.3.5数字签名
14.4本章小结
第五部分 高级扩展
第15章 WIF开发框架
15.1WIF基本原理
15.1.1标识库
15.1.2基于声明的标识模型
15.1.3安全令牌服务
15.1.4联合身份验证实例
15.1.5WIF的功能
15.2WIF编程模型
15.2.1WIF编程模型的优势
15.2.2WIF基本行为
15.2.3IClaimsIdentity和IClaimsPrincipal
15.3WIF与ASP.NET实践
15.4本章小结
第16章 微软云安全
16.1云计算
16.1.1云计算的演进
16.1.2云计算的特点
16.2微软的云计算
16.2.1Windows Azure平台的架构
16.2.2应用模式
16.3Windows Azure安全
16.3.1安全模式
16.3.2云安全设计
16.3.3开发生命周期安全
16.3.4服务的运营方式
16.4本章小结.3.1准备工作
15.3.2将认证外包给STS
15.3.3基本编程概念
15.4本章小结
第16章 微软云安全
16.1云计算
16.1.1云计算的演进
16.1.2云计算的特点
16.2微软的云计算
16.2.1Windows Azure平台的架构
16.2.2应用模式
16.3Windows Azure安全
16.3.1安全模式
16.3.2云安全设计
16.3.3开发生命周期安全
16.3.4服务的运营方式
16.4本章小结"
精彩书摘
第1章.NET 体系结构
本章将基于.NET 4.0从整体上论述.NET框架的体系结构,并会从新的角度对与安全性较为相关的内容进行介绍。由于本书不同于编程类教程,因此许多细节问题只能进行简略概括或略掉不讲,有疑惑的读者可查找相关资料自行修炼。
从.NET安全的需要出发,本章主要介绍公共语言运行时(CLR)、公共类型系统(CTS)、公共语言规范(CLS)、中间语言(IL)、框架类库(FCL)、基础类库(BCL)、即时编译(JIT)和预编译,以及动态语言运行时(DLR),并且会从底层进行详细的解析。建议读者不要跳过本章。
1.1公共语言运行时
公共语言运行时(Common Language Runtime,CLR)为.NET Framework提供了托管运行环境,它负责运行托管代码,进行安全检查,垃圾回收等环节。本节只会对运行库进行概述,与安全相关的详细内容将在后续章节进行详细剖析。
微软公司为开发人员开发由CLR负责运行的程序创造了非常便利的条件,比如,开发工具及编译器会不断升级,且有丰富的文档详细介绍.NET开发的方方面面。使用基于CLR的语言编译器开发的代码称为托管代码。托管代码具有许多优点,例如跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。
若要使CLR能够向托管代码提供服务,语言编译器必须生成一些元数据来描述代码中的类型、成员和引用。元数据与代码一起存储,每个可加载的CLR可移植执行(Portable Executable,PE) 文件都包含元数据。CLR使用元数据来完成以下任务:查找和加载类、在内存中安排实例、解析方法调用、生成本机代码、强制安全性,以及设置运行时上下文边界。
CLR自动处理对象布局并管理对象引用,当不再使用对象时就会释放它们。按这种方式实现生存期管理的对象称为托管数据。如果编写的代码是托管代码,可以在.NET Framework 应用程序中使用托管数据、非托管数据,或者同时使用这两种数据。由于语言编译器会提供自己的类型(如基元类型),因此你可能并不总是知道(或需要知道)这些数据是否是托管的。
有了CLR,就可以很容易地设计出对象能够跨语言交互的组件和应用程序。也就是说,用不同语言编写的对象可以互相通信,并且它们的行为可以紧密集成。例如,可以定义一个类,然后使用不同的语言从原始类派生出另一个类或调用原始类的方法,还可以将一个类的实例传递到用不同的语言编写的另一个类的方法。这种跨语言集成之所以成为可能,是因为基于CLR的语言编译器和工具使用了由CLR定义的通用类型系统,而且它们遵循CLR关于定义新类型以及创建、使用、保持和绑定到类型的规则。
所有托管组件都带有生成它们所基于的组件和资源的信息,这些信息构成了元数据的一部分。CLR使用这些信息确保组件或应用程序具有它所有所需内容的指定版本,这样就使代码不太可能由于某些未满足的依赖项而发生中断。注册信息和状态数据不再保存在注册表中(因为在注册表中建立和维护这些信息很困难)。取而代之的是,有关定义类型(及其依赖项)的信息作为元数据与代码存储在一起,这样就大大降低了组件复制和移除任务的复杂性。
语言编译器和工具公开CLR功能的方式对于开发人员来说不仅有用,而且很直观。这意味着,CLR的某些功能可能在某一环境中比在另一环境中更突出,对CLR的体验取决于所使用的语言编译器或工具。
……
前言/序言
.NET安全揭秘 下载 mobi epub pdf txt 电子书 格式