新書推薦:
《
罗马政治观念中的自由
》
售價:NT$
230.0
《
中国王朝内争实录:宠位厮杀
》
售價:NT$
281.0
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:NT$
203.0
《
未来特工局
》
售價:NT$
254.0
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:NT$
250.0
《
英国简史(刘金源教授作品)
》
售價:NT$
449.0
《
便宜货:廉价商品与美国消费社会的形成
》
售價:NT$
352.0
《
读书是一辈子的事(2024年新版)
》
售價:NT$
352.0
編輯推薦:
全面、系统、深刻揭示.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安全基础
第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.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的体验取决于所使用的语言编译器或工具。