内容简介良好的安全性是软件产品和软件服务的基石,也是企业得以生存的根基,越来越被企业重视。作为.NET程序员、.NET应用架构师或.NET安全工作人员,当你要重新构建一个安全的.NET应用或现有的应用面临着安全威胁时,究竟该如何应对?是从零开始打造自己的安全系统还是踩在巨人的肩膀上继续攀登?在很多技术领域,我们都不必为安全问题而重复发明轮子,尤其是.NET领域,它已经为我们打好了坚实的基础。从ASP.NET、WPF、WCF、Silverlight,到Open XML、WIF、Windows Azure,.NET都提供了强大而完整的安全性支持。本书从.NET底层原理出发,结合大量实际案例,全面、系统、深刻地揭示了.NET平台的安全机制和工作原理,勾勒出了一幅完整的.NET安全性的全景视图。无论是要系统学习.NET的安全知识,还是要开发和架构安全的.NET应用,抑或是维护.NET系统的安全性,本书都能为我们提供绝佳的实践指导。
作者简介杨文海 (笔名:玄魂) 资深.NET开发工程师(常以“代码狂人”自居)和安全技术专家,有多年.NET开发经验,对.NET平台以及ASP.NET、WPF、WCF、Silverlight、Open XML、WIF等技术的底层原理和安全机制有深入的研究。崇尚黑客精神,活跃于国内外各大安全论坛,教学相长,乐此不疲。目前致力于打造最好的.NET安全编程框架,传播真正的黑客精神。 作者微博:http://weibo.com/xuanhun
迷你书下载地址http://vdisk.weibo.com/s/5oszb
摘自前言 当安全问题日益严重时,.NET没有令我失望,依然优秀。当我再次投身安全领域,我的世界不再只有.NET,这也使我换了一个角度来审视她,来研究她的安全。 对于专注业务的程序员来说,重新构建一个安全的系统成本太高。即使是一个安全专家,也面临着将许多的安全方案用代码来实现的困境。虽然不能实现不用敲一行代码就解决这些问题,但是作为.NET开发人员,可以将问题变得更简单。因为.NET在设计之初就考虑了安全性问题,而且在迈向面向服务的进程中,还诞生了专注于安全的框架。 但是可惜的是,大部分开发人员竟然对.NET安全性一无所知。因此,我想将自己在实践中总结出来的经验和体会与大家分享,希望每一个.NET开发人员都能从中受益,让应用更安全、更健壮,让自我开发的安全框架更简洁,让开发过程更轻松。本书特点 在创作本书的过程中,我也在不断地思考安全原理和安全应用的取舍问题,思虑再三,最后决定按照自己的实践经验和想法来决定重点知识的结构安排。 本书立足.NET平台,但是所讲的内容并不只针对.NET开发人员。我更想通过这本书,将这些安全基础理论和安全架构的方式传达给更多的读者。在对一些通用的安全基础进行讲解的时候,我更倾向于将重点放在理论上而不是.NET平台的实现上,在对其他内容进行讲解时则又将侧重点放在.NET本身,这样的结构安排是经过仔细斟酌的。当然,如果你有更合理的方案可以提出来,很高兴与你一起探讨。 本书包含了.NET安全性的所有核心主题。在写这本书的时候,力求使读者能在最短的时间内理解每一个概念,了解基本的框架、流程、原理和使用方法。在具体的应用上,本书没有完整的例子,因为本书想传达的是理念。我坚持认为,通过学习本书内容之后,掌握独立完成应用的能力比复制代码更重要。读者对象 这不是一本讲黑客攻防的书,如果想从这本书中得到关于黑客攻击的技术细节,那么你会很失望;如果你想从这本书中得到如何防守跨站攻击、SQL注入或者网页木马的实施细节,你也将会失望。这是一本面向开发人员和安全专家的书,重点讲解.NET平台体现出来的基本安全理论,对于专注于安全的任何群体来说,这都是必须掌握的。 本书的读者对象包括: 有一定开发经验的.NET程序员 专注于.NET安全的安全技术工程师 .NET应用架构师 高校计算机相关专业和.NET培训机构的老师和学生 互联网架构师 对计算机和网络安全感兴趣的爱好者本书的内容 本书共分为五个部分,五个部分之间既相互独立又相辅相成。 第一部分(第1章~第3章)讲解了.NET安全的基础,这是.NET架构的核心部分。具体内容包括.NET体系结构、程序集和反射、应用程序域和CLR寄宿的原理。第一部分提到的核心概念是全书所有章节都会反复提到的。如果还没有对.NET的底层原理了解得很透彻,建议认真阅读这一部分。 第二部分(第4章~第5章)讲解了.NET的平台级安全性。这些内容是整个.NET应用框架安全性的基础,没有这些基础是无法继续阅读的。这是本书的必读部分。在这一部分我们将具体了解到代码访问安全的原理和基于角色的安全性,这是整个.NET安全性的核心概念。后文的应用安全环节与之重复的部分大都省略了细节,所以建议务必仔细阅读此部分。 第三部分(第6章~第8章)是数据安全部分。这一部分直接建立在第二部分的基础之上,介于底层安全性和应用安全之间。在这一部分中,我们会分析很多通用安全概念的原理,其中包括加密、解密、数字证书和签名,以及数据存储安全和通信安全。这部分的内容是许多安全应用和安全协议的基础,有助于了解很多基础概念的原理和常用加密算法的数学解释。 第四部分(第9章~第14章)是应用安全部分。主要内容集中在.NET平台的几种常用应用框架的安全上,是.NET开发人员的必读部分。这一部分根据实际情况对部分应用的安全原理作了详细解析,并针对部分应用给出了详细的示例,以确保读者能从原理和实践上完全掌握这部分内容。 第五部分(第15章~第16章)是高级扩展部分。这一部分介绍了最新的WIF框架和云安全的内容,这是.NET安全的未来趋势。勘误和支持 参加本书编写的还有我的老师鲁凤芝女士,北森公司的同事何平、贺立华、杨博宇、武伟、郝志刚、甄建廷。由于作者水平有限,编写时间仓促,书中难免会出现一些错误或疏漏,恳请读者批评指正。欢迎访问我的博客(http://www.cnblogs.com/xuanhun)或发邮件(xuanhun521@126.com)与我交流。不论是批评还是褒扬,您的反馈都是对本书的关爱。致谢
目录前 言第一部分 .NET安全基础第1章 .NET 体系结构/ 21.1公共语言运行时/ 21.2公共类型系统/ 31.2.1CTS基本结构/ 31.2.2公共语言规范/ 51.3中间语言/ 71.3.1托管PE文件/ 71.3.2元数据/ 141.3.3IL常用指令/ 171.3.4IL与代码验证/ 191.4基础类库和框架类库/ 191.4.1BCL 基本命名空间/ 201.4.2.NET Framework 4.0中对BCL的更新/ 211.4.3FCL命名空间/ 231.5即时编译和预编译/ 231.6动态语言运行时/ 251.7本章小结/ 26第2章 程序集与反射/ 272.1程序集/ 272.1.1模块的操作/ 272.1.2程序集概念/ 292.1.3强名称程序集/ 312.1.4共享程序集/ 332.1.5创建多文件程序集 / 342.2使用反射操作程序集/ 362.2.1反射程序集/ 362.2.2加载和卸载程序集/ 392.2.3动态创建程序集/ 402.3本章小结/ 42第3章 应用程序域与CLR寄宿/ 443.1应用程序域基础/ 443.1.1 应用程序域的特点/ 443.1.2创建应用程序域/ 453.1.3卸载应用程序域/ 453.2CLR寄宿/ 483.2.1核心组件MSCOREE.DLL/ 483.2.2托管exe文件的加载和执行/ 573.2.3ASP.NET Web窗体和Web Service / 583.3高级宿主控制/ 633.3.1托管宿主/ 633.3.2托管环境下的线程注入实例/ 653.4本章小结/ 66第二部分 .NET平台级安全性第4章 代码访问安全性/ 684.1代码访问安全性机制/ 684.1.1代码访问安全性机制的作用/ 684.1.2工作方式/ 704.1.3安全性语法/ 734.2代码组/ 754.2.1对代码组的管理/ 754.2.2成员条件/ 814.2.3属性/ 854.3权限和权限集/ 864.3.1权限操作的基本概念/ 864.3.2.NET提供的代码访问权限/ 924.3.3操作权限集/ 964.4代码访问安全性编程实践/ 984.4.1实现自定义权限的构造函数/ 994.4.2实现属性类/ 1024.4.3安装到安全策略中/ 1034.5本章小结/ 104第5章 基于角色的安全性/ 1055.1.NET Framework基于角色的安全性/ 1055.2基于角色的安全性编程实战/ 1065.3主体和标识/ 1105.3.1主体对象/ 1105.3.2标识对象/ 1175.4安全检查/ 1235.4.1基于角色的安全性权限对象/ 1235.4.2命令式安全检查/ 1255.4.3声明式安全检查/ 1275.4.4直接访问主体对象/ 1285.5本章小结/ 129第三部分 数据安全第6章 数据加密/ 1326.1加密技术简介/ 1326.2对称加密/ 1326.2.1对称加密原理/ 1336.2.2对称加密算法/ 1346.2.3.NET对称加密体系/ 1426.2.4对称加密实践/ 1476.3非对称加密/ 1526.3.1非对称加密原理/ 1526.3.2非对称加密算法/ 1536.3.3.NET 非对称加密体系/ 1586.3.4非对称加密实践/ 1616.4消息摘要和Hash算法/ 1686.4.1Hash原理/ 1686.4.2Hash算法/ 1696.4.3.NET中的Hash算法/ 1756.4.4消息摘要编程实例/ 1796.5数字签名和数字证书/ 1826.5.1数字签名/ 1826.5.2使用.NET进行数字签名/ 1836.5.3数字证书/ 1866.5.4在.NET中操作数字证书/ 1906.6本章小结/ 196第7章 数据存储安全/ 1987.1磁盘文件安全/ 1987.1.1文件的基本操作/ 1997.1.2文件和目录的访问控制/ 2097.1.3安全删除数据/ 2167.1.4文件加密/解密/ 2187.2数据库安全/ 2217.2.1SQL Server的CLR集成/ 2217.2.2CLR集成的功能/ 2227.2.3编译过程/ 2237.3SQL Server的CLR集成安全性/ 2237.3.1CLR集成代码访问的安全性/ 2237.3.2宿主保护特性和CLR集成编程/ 2277.3.3CLR 集成安全性中的链接/ 2287.3.4模拟和CLR集成安全性/ 2297.3.5允许部分可信任的调用方/ 2317.3.6应用程序域和CLR集成安全性/ 2327.4本章小结/ 232第8章 数据通信安全/ 2338.1SSL原理及应用/ 2338.1.1SSL协议体系结构/ 2338.1.2配置HTTPS / 2388.1.3在.NET开发中处理HTTPS / 2508.2会话状态安全/ 2528.2.1会话状态安全基础/ 2538.2.2会话状态安全攻略/ 2628.3本章小结/ 263第四部分 .NET应用安全第9章 应用程序保护/ 2669.1反编译/ 2669.1.1反编译工具Reflector / 2669.1.2.NET反编译原理/ 2699.2强名称/ 2749.2.1使用强名称保护代码完整性/ 2759.2.2引用强名称签名的程序集/ 2809.2.3强名称的脆弱性/ 2829.2.4保护强名称/ 2839.3代码混淆/ 2839.3.1名称混淆/ 2839.3.2流程混淆/ 2869.3.3语法混淆/ 2949.4加壳/ 2979.5本章小结/ 304第10章 ASP.NET应用安全/ 30510.1ASP.NET安全性工作原理/ 30510.1.1ASP.NET安全性体系结构/ 30510.1.2ASP.NET安全数据流/ 30810.1.3ASP.NET模拟/ 31110.1.4ASP.NET身份验证/ 31210.1.5ASP.NET授权/ 32510.1.6ASP.NET SQL Server注册工具/ 32710.2ASP.NET成员资格/ 33110.2.1ASP.NET成员资格的功能/ 33110.2.2ASP.NET成员资格类/ 33310.2.3配置成员资格/ 33810.2.4成员资格的应用/ 34210.2.5自定义成员资格提供程序/ 34910.2.6WCF身份验证服务/ 35810.3ASP.NET角色管理/ 36210.3.1ASP.NET角色和访问规则/ 36210.3.2ASP.NET角色管理类/ 36510.3.3ASP.NET角色管理提供程序/ 36710.3.4自定义ASP.NET角色管理提供程序/ 36810.3.5WCF角色服务/ 37010.4受保护配置/ 37110.4.1管理受保护配置/ 37110.4.2受保护配置提供程序/ 37310.4.3RSA密钥容器/ 37910.5本章小结/ 381第11章 WCF应用安全/ 38211.1WCF安全基本概念/ 38211.1.1绑定/ 38311.1.2安全模式/ 39411.1.3身份验证凭据/ 39611.1.4保护级别/ 39811.1.5授权/ 40011.1.6模拟/ 40011.2WCF局域网安全/ 40011.2.1NetTcpBinding Transport安全模式/ 40111.2.2NetTcpBinding Message安全模式/ 42211.2.3局域网绑定安全/ 42911.2.4局域网环境下的授权策略/ 43411.3WCF互联网安全/ 44411.3.1BasicHttpBinding示例/ 44511.3.2BasicHttpBinding安全项/ 44911.3.3BasicHttpBinding安全应用/ 45411.3.4WsHttpBinding简介/ 47711.4WCF安全认证流程/ 47811.5本章小结/ 479第12章 WPF应用安全/ 48012.1WPF应用程序/ 48012.1.1WPF独立应用程序/ 48012.1.2WPF浏览器应用程序/ 48312.2WPF应用程序安全性/ 48512.2.1安全导航/ 48612.2.2Web浏览安全设置/ 48712.2.3安全沙箱/ 50012.2.4部分信任安全/ 50112.2.5部分信任安全策略/ 50612.2.6松散XAML文件的沙箱行为/ 51012.3部分受信任代码的库调用/ 51112.4本章小结/ 513第13章 Silverlight应用安全/ 51413.1Silverlight运行机制 / 51413.1.1Silverlight运行环境/ 51513.1.2Silverlight架构/ 51613.1.3CoreCLR安全模型/ 51813.2Silverlight运行在沙箱中/ 51913.3透明模型/ 52413.3.1透明代码的调用/ 52513.3.2透明代码、SafeCritical代码和关键代码的比较/ 52713.3.3Silverlight透明模型的优势/ 52813.4网络通信/ 52913.4.1基本HTTP功能/ 52913.4.2HTTP调用/ 53013.4.3跨域通信/ 53213.4.4网络安全访问限制/ 53613.4.5URL访问限制/ 54813.5Silverlight安全策略/ 55013.5.1XSS问题/ 55013.5.2代码隔离/ 55113.5.3用户数据保护/ 55413.5.4保护xap文件/ 55813.6本章小结/ 559第14章 Open XML应用安全/ 56114.1Open XML规范/ 56114.1.1文档格式/ 56114.1.2开放打包协定/ 56314.1.3Open XML标记语言/ 56614.2Open XML开发基础 / 57314.2.1操作ZIP / 57414.2.2操作XML / 57714.2.3Open XML API / 58214.3Open XML应用安全/ 58614.3.1宏安全/ 58614.3.2OLE机制/ 58714.3.3隐藏数据/ 59014.3.4文档校验/ 59214.3.5数字签名/ 59314.4本章小结/ 599第五部分 高级扩展第15章 WIF开发框架/ 60215.1WIF基本原理/ 60215.1.1标识库/ 60315.1.2基于声明的标识模型/ 60415.1.3安全令牌服务/ 60915.1.4联合身份验证实例/ 61415.1.5WIF的功能/ 61615.2WIF编程模型/ 61715.2.1WIF编程模型的优势/ 61715.2.2WIF基本行为/ 61815.2.3IClaimsIdentity和IClaimsPrincipal / 61915.3WIF与ASP.NET实践/ 62015.3.1准备工作/ 62015.3.2将认证外包给STS / 62215.3.3基本编程概念/ 62515.4本章小结/ 638第16章 微软云安全/ 63916.1云计算/ 63916.1.1云计算的演进/ 63916.1.2云计算的特点/ 64016.2微软的云计算/ 64216.2.1Windows Azure平台的架构/ 64316.2.2应用模式/ 64416.3Windows Azure安全/ 64516.3.1安全模式/ 64516.3.2云安全设计/ 64816.3.3开发生命周期安全/ 65416.3.4服务的运营方式/ 65416.4本章小结/ 656
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)