編輯推薦
全麵、係統、深刻揭示.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 電子書 格式