內容簡介
當運用ASP.NET來開發網站或是企業項目系統時達奔,安全性已成為了首要的問題。本書將介紹如何在快速高效的ASP.NET 3.5網路套用開發中,制定最出色的安全策略,讓開喇束阿獄發的成果具有最佳的安全性。本書囊括了進行ASP.NET 3.5網路編程開發中用到的各種主要安全策略,共分試去和14章,主要內容包括:ASP.NET及其工作原理、Web安全基礎、ASP.NET應用程式的安全架構ASP.NET中的輸入驗證、ASP.NET中的存儲加密技術、ASP.NET的身份驗證和授權機制、ASP.NET代碼訪問安全策略、部分信任的恥夜海ASP.NET應用程式、ASP.ENT Web服務安全機制、.NET Remoting安全機制、資料庫訪問安全機制、ASP.NET的日誌和監測機制,如何構建安全的ASP.NET應用程式以及一個ASP.NET安全技術的綜合套用實例。
本書通過大量的實例,由淺入深地介紹了如何利用ASP.NET 3.5開發安全的網路應用程式的相關知識。全書內容精煉、重點突遷束和出、實例豐富,是從事網路套用開發與管理人員的必備參考書,同時也非常適合大、中專院校相關專業的師生閱讀。
圖書目錄
第1章 ASP.NET動態網頁開發概述 1
1.1 動態網頁開發技術簡介 1
1.1.1 ASP動態網頁技術 1
1.1.2 JSP動態網頁技術 2
1.1.3 PHP動態網頁技術 3
1.2 .NET Framework概覽 3
1.2.1 .NET Framework概念概述 4
1.2.2 .NET Framework 3.5體系結構 6
1.3 ASP.NET簡介 6
1.3.1 ASP.NET簡介 7
1.3.2 ASP.NET主要特性 7
1.4 ASP.NET 3.5的新特性 8
1.4.1 對AJAX和JavaScript支持 8
1.4.2 ADO.NET的改進 10
1.4.3 對Silverlight和XAML的支持 10
1.4.4 對WCF的改進 10
1.5 ASP.NET開發協協試工具簡介 10
1.5.1 Visual Studio .NET 10
1.5.2 ASP.NET Web Matrix 12
1.6 配置ASP.NET運行環境 13
1.6.1 運行環境系統要求 13
1.6.2 安裝IIS 14
1.6.3 安裝.NET Framework 16
1.6.4 測試運行環境 16
1.7 小結 20
第2章 Web安全簡介 21
2.1 Web安全基礎 21
2.1.1 理解Web安全 21
2.1.2 Web安全策略基礎 22
2.1.3 安全通信 22
2.2 Web安全開發技術 23
2.2.1 IIS安全技術支持 23
2.2.2 ASP.NET安全技術支持 25
2.2.3 企業服務(Enterprise Services)安全技術支持 26
2.2.4 SQL Server安全技術支持 26
2.3 Web安全設計原則 27
2.4 Web應用程式的才槳船厚體系結構與設計安全性考慮 28
2.5 Web部署安全性考慮 29
2.6 Web客戶端輸入驗證 30
2.7 Web客戶端身份驗證 32
2.8 Web授權訪問技術 34
2.9 Web套用的配置管理 36
2.10 Web敏感數據的安全性考慮 37
2.10.1 機密數據 37
2.10.2 敏感的用戶個人數據 38
2.11 Web套用會話管理的安全性考慮 39
2.12 Web套用加密技術 39
2.13 Web參數操作的安全性問題 40
2.14 Web套用異常管理 41
2.15 Web套用審核與日誌機制 41
2.16 Web用戶安全概述 42
2.17 建立用戶證書 43
2.17.1 實施強密碼 43
2.17.2 避免使用易猜測的證書 44
2.17.3 防止證書獲取 45
2.17.4 限制空閒的賬戶 45
2.18 管理密碼 46
2.18.1 存儲密碼 46
2.18.2 密碼時效和歷史記錄 47
2.18.3 改變密碼 48
2.19 重新設定丟失或被遺忘的密碼 49
2.19.1 重新設定密碼 49
2.19.2 通過電子郵件傳送信息 52
2.19.3 分配臨時密碼 52
2.19.4 使用密碼的提示問題 52
2.20 授權用戶 52
2.20.1 教育用戶 53
2.20.2 讓用戶置身其中 53
2.21 小結 53
第3章 ASP.NET應用程式的安全架構 55
3.1 .NET Web應用程式架構 55
3.1.1 多層應用程式架構 55
3.1.2 Web應用程式物理部署模型 56
3.1.3 ASP.NET關鍵技術 57
3.2 ASP.NET安全體系結構 58
3.2.1 ASP.NET安全結構 59
3.2.2 ASP.NET安全數據流 59
3.2.3 ASP.NET身份驗證 62
3.2.4 ASP.NET授權 62
3.2.5 ASP.NET關守和關口 64
3.2.6 ASP.NET模擬 65
3.3 ASP.NET框架安全機制 66
3.3.1 代碼訪問安全性 66
3.3.2 主體和標識 67
3.3.3 WindowsPrincipal和WindowsIdentity 68
3.3.4 GenericPrincipal和相關的標識對象 68
3.3.5 ASP.NET和HttpContext.User 69
3.4 .NET Remoting和Web服務安全機制 69
3.4.1 .NET Remoting安全機制 69
3.4.2 Web服務安全機制 69
3.5 小結 70
第4章 ASP.NET中的輸入驗證 71
4.1 輸入驗證技術 71
4.1.1 輸入驗證技術簡介 71
4.1.2 輸入驗證技術 72
4.2 緩解技術 73
4.2.1 輸出編碼機制 73
4.2.2 沙盒機制 75
4.2.3 完整性檢查機制 75
4.3 ASP.NET應用程式中的驗證 75
4.3.1 自動驗證服務 75
4.3.2 表單驗證 77
4.3.3 創建自定義驗證控制項 78
4.4 ASP.NET輸入驗證實例 87
4.5 小結 92
第5章 ASP.NET中的存儲加密技術 93
5.1 識別攻擊和攻擊者 93
5.2 加密技術 95
5.3.1 加密技術簡介 95
5.3.2 加密的必要性 95
5.3 哈希數據 96
5.3.1 哈希算法 96
5.3.2 .NET的哈希算法 96
5.3.3 .NET常用哈希算法的使用 97
5.3.4 C#中實現常用的哈希算法加密 98
5.4 .NET數據保護措施 104
5.4.1 加密算法 104
5.4.2 密鑰和密鑰大小 105
5.4.3 對稱性加密 105
5.4.4 .NET的對稱性加密 106
5.4.5 非對稱性加密 108
5.4.6 在.NET中使用非對稱性加密證書 109
5.4.7 證書 111
5.4.8 完整性保護 112
5.5 使用Windows數據保護API 113
5.5.1 DPAPI簡介 113
5.5.2 DP API使用實例 114
5.6 保護配置數據 119
5.6.1 保護配置數據的前提 119
5.6.2 確定要保護的配置數據 120
5.6.3 加密選項 121
5.6.4 以編程方式對配置檔案進行加密 122
5.6.5 命令行工具aspnet_regiis.exe介紹 123
5.7 保護ViewState124
5.8 小結 128
第6章 ASP.NET身份驗證和授權機制 129
6.1 使用Windows身份驗證 129
6.1.1 Windows身份驗證的工作方式 130
6.1.2 ASP.NET中Windows身份驗證API 131
6.1.3 實現Windows身份驗證 131
6.1.4 自定義Windows身份驗證 135
6.2 使用.NET passport身份驗證 136
6.2.1 .NET passport身份驗證的工作方式 136
6.2.2 實現.NET passport身份驗證 137
6.2.3 .NET passport類 140
6.2.4 自定義.NET passport身份驗證 140
6.3 使用窗體身份驗證 140
6.3.1 窗體身份驗證的工作方式 141
6.3.2 窗體身份驗證API 141
6.3.3 實現窗體身份驗證 142
6.4 自定義身份驗證 143
6.4.1 為自定義身份驗證配置web.config 144
6.4.2 處理AuthenticateRequest事件 144
6.4.3 創建自己的主體和標識 144
6.4.4 在運行階段附加自定義身份驗證 145
6.5 ASP.NET中授權方式 145
6.5.1 基於角色的授權 145
6.5.2 基於資源的授權 150
6.6 綜合實例 151
6.6.1 Forms身份驗證實例 151
6.6.2 Windows身份驗證實例 159
6.7 小結 159
第7章 ASP.NET代碼訪問安全 161
7.1 代碼訪問安全性介紹 161
7.2 代碼訪問安全性基礎知識 162
7.2.1 編寫可驗證為類型安全的代碼 162
7.2.2 安全性語法 163
7.2.3 請求許可權 164
7.2.4 使用安全類庫 171
7.2.5 使用託管包裝類 172
7.3 編寫安全類庫 172
7.3.1 安全要求 172
7.3.2 重寫安全檢查 175
7.3.3 用於類和成員範圍的聲明式安全 179
7.3.4 安全最佳化 180
7.3.5 安全透明的代碼 182
7.4 編寫安全託管控制項 184
7.4.1 開發 184
7.4.2 部署 184
7.5 創建自己的代碼訪問許可權 185
7.5.1 設計許可權 185
7.5.2 實現自定義許可權 186
7.5.3 添加聲明式安全支持 193
7.5.4 請求自定義許可權 194
7.5.5 更新安全策略 194
7.5.6 創建其他自定義許可權 195
7.6 小結 196
第8章 部分信任ASP.NET 197
8.1 為什麼選擇部分信任 197
8.2 配置部分信任 198
8.3 理解策略檔案 199
8.3.1 策略檔案的內容 199
8.3.2 策略程式集 201
8.3.3 命名許可權集 201
8.3.4 代碼組 202
8.3.5 修改策略檔案 203
8.3.6 自定義策略 204
8.4 堆疊審核 205
8.4.1 修改堆疊審核 205
8.4.2 堆疊修改實例介紹 206
8.5 SecurityException的作用 207
8.6 鎖定ASP.NET配置 211
8.7 在部分受信任的代碼中調用程式集 212
8.7.1 通過部分受信任的代碼使用庫 212
8.7.2 何時啟用部分受信任的調用方 213
8.7.3 通過部分受信任的代碼訪問共享庫 213
8.7.4 對APTCA程式集中的某些類型要求完全信任 214
8.7.5 標有APTCA的.NET Framework程式集 215
8.7.6 如何:讓部分受信任的代碼無法訪問APTCA程式集 215
8.7.7 從程式集中移除部分信任 216
8.8 小結 216
第9章 ASP.ENT Web服務安全機制 217
9.1 Web服務體系結構 217
9.1.1 Web服務分層架構 217
9.1.2 Web服務堆疊 218
9.2 Web服務安全模型 218
9.2.1 平台級安全性 218
9.2.2 應用程式級安全性 219
9.2.3 訊息級安全性 220
9.3 Web服務身份驗證和授權策略 221
9.3.1 帶模擬功能的Windows身份驗證 221
9.3.2 不帶模擬功能的Windows身份驗證 222
9.3.3 使用固定標識的Windows身份驗證 224
9.3.4 實現Web服務的Windows身份驗證配置 224
9.3.5 自定義SOAP身份驗證 229
9.3.6 用於授權的基於角色的安全 233
9.4 Web服務加密方法 236
9.4.1 SSL加密 236
9.4.2 SOAP加密 241
9.4.3 XML簽名與加密技術 246
9.5 Web服務配置安全策略 251
9.5.1 配置IIS設定 252
9.5.2 配置ASP.NET設定 253
9.5.3 保護資源安全 253
9.5.4 禁用HTTP-GET、HTTP-POST 253
9.6 Web服務安全通信 254
9.6.1 傳輸級安全通信 254
9.6.2 訊息級安全通信 255
9.7 小結 256
第10章 .NET Remoting安全機制 257
10.1 .NET Remoting體系結構 257
10.1.1 .NET Remoting簡介 258
10.1.2 .NET Remoting接收 266
10.1.3 ASP.NET和HTTP通道 269
10.1.4 .NET Remoting網關守衛 270
10.2 .NET Remoting的身份驗證與授權 271
10.2.1 將身份驗證駐留在ASP.NET中 271
10.2.2 將身份驗證駐留在Windows服務中 272
10.2.3 自定義.NET Remoting身份驗證 272
10.2.4 授權 272
10.2.5 身份驗證和授權策略 273
10.2.6 將身份驗證的憑據傳遞給遠程對象 274
10.2.7 傳遞原調用方 276
10.3 .NET Remoting資源訪問控制 278
10.3.1 系統資源訪問控制 278
10.3.2 網路資源訪問訪問 278
10.4 受信任的子系統模型 279
10.5 .NET Remoting安全通信 281
10.6 選擇.NET Remoting的主機進程 281
10.6.1 駐留在ASP.NET中 282
10.6.2 駐留在Windows服務中 282
10.6.3 駐留在控制台應用程式中 283
10.7 .NET Remoting與Web服務安全性比較 283
10.8 小結 284
第11章 資料庫訪問安全機制 285
11.1 資料庫訪問威脅與對策 285
11.1.1 SQL注入 286
11.1.2 配置數據的泄漏 287
11.1.3 敏感應用程式數據的泄漏 287
11.1.4 資料庫架構和連線詳細信息的泄漏 288
11.1.5 未授權訪問 288
11.1.6 網路偵聽 289
11.2 資料庫訪問編碼設計注意事項 289
11.3 輸入驗證 291
11.4 SQL注入 291
11.5 數據訪問身份驗證 293
11.5.1 使用Windows身份驗證 294
11.5.2 保護SQL身份驗證的憑據 294
11.5.3 使用最低特權賬戶連線 294
11.6 數據訪問授權 295
11.6.1 限制未授權的調用方 296
11.6.2 限制未授權的代碼 297
11.6.3 在資料庫中限制應用程式 297
11.7 數據訪問配置管理 297
11.7.1 使用Windows身份驗證 298
11.7.2 保護應用程式的連線字元串 298
11.7.3 用受限的ACL保護UDL檔案 299
11.8 保護敏感數據 299
11.8.1 對存儲的敏感數據加密 299
11.8.2 保護跨網路傳輸的敏感數據 300
11.8.3 存儲帶salt值的密碼散列值 300
11.9 數據訪問異常管理 301
11.9.1 捕獲和記錄ADO.NET異常 301
11.9.2 確保關閉資料庫連線 304
11.9.3 在ASP.NET應用程式中使用一般性錯誤頁 304
11.10 構建安全的數據訪問組件 305
11.11 代碼訪問安全性注意事項 307
11.12 資料庫伺服器部署注意事項 307
11.13 SQL Server安全性支持 308
11.13.1 SQL Server安全性概述 309
11.13.2 SQL Server中的身份驗證 310
11.13.3 SQL Server中的伺服器和資料庫角色 311
11.13.4 SQL Server中的所有權和用戶架構分離 312
11.13.5 SQL Server中的授權和許可權 314
11.13.6 SQL Server中的數據加密 315
11.13.7 SQL Server中的CLR集成安全性 316
11.14 保證ADO.NET的安全 316
11.14.1 ADO.NET的安全性概述 316
11.14.2 ADO.NET安全數據訪問 318
11.14.3 ADO.NET安全客戶端應用程式 319
11.14.4 代碼訪問安全性和ADO.NET 320
11.14.5 ADO.NET的隱私和數據安全 323
11.15 小結 324
第12章 ASP.NET的日誌和監測機制 325
12.1 錯誤處理 325
12.1.1 了解401非授權錯誤 325
12.1.2 錯誤處理 327
12.1.3 錯誤處理程式的完整示例 329
12.2 日誌和監測 337
12.2.1 事件日誌 337
12.2.2 性能監視器 345
12.2.3 電子郵件 345
12.2.4 ASP.NET跟蹤 345
12.2.5 日誌和部分信任 348
12.3 健康監測系統 349
12.3.1 創建自定義監視事件 349
12.3.2 配置健康檢測 353
12.3.3 SQL伺服器提供程式 357
12.3.4 WMI提供程式 359
12.3.5 電子郵件提供程式 363
12.3.6 緩衝事件提供程式 367
12.3.7 事件日誌提供程式 372
12.3.8 編寫自定義提供程式 373
12.3.9 狀態監視和部分信任 376
12.4 小結 382
第13章 構建安全的ASP.NET應用程式 383
13.1 總指導原則 383
13.2 作業系統強化 384
13.2.1 自動更新 385
13.2.2 禁用服務和協定 385
13.2.3 包過濾 388
13.2.4 保護Windows檔案共享 389
13.2.5 審核 394
13.3 資料庫伺服器強化 394
13.3.1 修補程式和更新程式 394
13.3.2 服務 395
13.3.3 協定 396
13.3.4 賬戶 397
13.3.5 檔案和目錄 399
13.3.6 共享 400
13.3.7 連線埠 400
13.3.8 註冊表 401
13.3.9 審核和日誌 402
13.4 Web伺服器強化 402
13.4.1 應用程式池 402
13.4.2 Web服務擴展 404
13.4.3 Web內容 407
13.4.4 HTTP頭 407
13.4.5 日誌 407
13.4.6 URLScan 408
13.4.7 訪問控制列表 408
13.4.8 啟用SSL 408
13.4.9 驗證方法 408
13.5 ASP.NET強化 409
13.5.1 配置鎖死 409
13.5.2 推薦設定 409
13.5.3 預編譯 409
13.6 小結 410
第14章 綜合案例 411
14.1 案例前言 411
14.2 系統總體設計 411
14.2.1 系統需求分析 411
14.2.2 系統安全框架設計 413
14.2.3 系統功能設計 414
14.2.4 模組功能劃分 415
14.3 資料庫設計 416
14.3.1 資料庫分析與設計 416
14.3.2 數據表的創建 418
14.3.3 資料庫表關係圖設計 424
14.4 系統實現 425
14.4.1 系統整體實現 425
14.4.2 系統身份驗證 440
14.4.3 數據加密 444
14.4.4 輸入驗證 445
14.4.5 系統異常處理 450
14.5 系統部署安全考慮 450
14.5.1 配置伺服器作業系統安全 451
14.5.2 配置伺服器防火牆 457
14.6 小結 458
3.1.1 多層應用程式架構 55
3.1.2 Web應用程式物理部署模型 56
3.1.3 ASP.NET關鍵技術 57
3.2 ASP.NET安全體系結構 58
3.2.1 ASP.NET安全結構 59
3.2.2 ASP.NET安全數據流 59
3.2.3 ASP.NET身份驗證 62
3.2.4 ASP.NET授權 62
3.2.5 ASP.NET關守和關口 64
3.2.6 ASP.NET模擬 65
3.3 ASP.NET框架安全機制 66
3.3.1 代碼訪問安全性 66
3.3.2 主體和標識 67
3.3.3 WindowsPrincipal和WindowsIdentity 68
3.3.4 GenericPrincipal和相關的標識對象 68
3.3.5 ASP.NET和HttpContext.User 69
3.4 .NET Remoting和Web服務安全機制 69
3.4.1 .NET Remoting安全機制 69
3.4.2 Web服務安全機制 69
3.5 小結 70
第4章 ASP.NET中的輸入驗證 71
4.1 輸入驗證技術 71
4.1.1 輸入驗證技術簡介 71
4.1.2 輸入驗證技術 72
4.2 緩解技術 73
4.2.1 輸出編碼機制 73
4.2.2 沙盒機制 75
4.2.3 完整性檢查機制 75
4.3 ASP.NET應用程式中的驗證 75
4.3.1 自動驗證服務 75
4.3.2 表單驗證 77
4.3.3 創建自定義驗證控制項 78
4.4 ASP.NET輸入驗證實例 87
4.5 小結 92
第5章 ASP.NET中的存儲加密技術 93
5.1 識別攻擊和攻擊者 93
5.2 加密技術 95
5.3.1 加密技術簡介 95
5.3.2 加密的必要性 95
5.3 哈希數據 96
5.3.1 哈希算法 96
5.3.2 .NET的哈希算法 96
5.3.3 .NET常用哈希算法的使用 97
5.3.4 C#中實現常用的哈希算法加密 98
5.4 .NET數據保護措施 104
5.4.1 加密算法 104
5.4.2 密鑰和密鑰大小 105
5.4.3 對稱性加密 105
5.4.4 .NET的對稱性加密 106
5.4.5 非對稱性加密 108
5.4.6 在.NET中使用非對稱性加密證書 109
5.4.7 證書 111
5.4.8 完整性保護 112
5.5 使用Windows數據保護API 113
5.5.1 DPAPI簡介 113
5.5.2 DP API使用實例 114
5.6 保護配置數據 119
5.6.1 保護配置數據的前提 119
5.6.2 確定要保護的配置數據 120
5.6.3 加密選項 121
5.6.4 以編程方式對配置檔案進行加密 122
5.6.5 命令行工具aspnet_regiis.exe介紹 123
5.7 保護ViewState124
5.8 小結 128
第6章 ASP.NET身份驗證和授權機制 129
6.1 使用Windows身份驗證 129
6.1.1 Windows身份驗證的工作方式 130
6.1.2 ASP.NET中Windows身份驗證API 131
6.1.3 實現Windows身份驗證 131
6.1.4 自定義Windows身份驗證 135
6.2 使用.NET passport身份驗證 136
6.2.1 .NET passport身份驗證的工作方式 136
6.2.2 實現.NET passport身份驗證 137
6.2.3 .NET passport類 140
6.2.4 自定義.NET passport身份驗證 140
6.3 使用窗體身份驗證 140
6.3.1 窗體身份驗證的工作方式 141
6.3.2 窗體身份驗證API 141
6.3.3 實現窗體身份驗證 142
6.4 自定義身份驗證 143
6.4.1 為自定義身份驗證配置web.config 144
6.4.2 處理AuthenticateRequest事件 144
6.4.3 創建自己的主體和標識 144
6.4.4 在運行階段附加自定義身份驗證 145
6.5 ASP.NET中授權方式 145
6.5.1 基於角色的授權 145
6.5.2 基於資源的授權 150
6.6 綜合實例 151
6.6.1 Forms身份驗證實例 151
6.6.2 Windows身份驗證實例 159
6.7 小結 159
第7章 ASP.NET代碼訪問安全 161
7.1 代碼訪問安全性介紹 161
7.2 代碼訪問安全性基礎知識 162
7.2.1 編寫可驗證為類型安全的代碼 162
7.2.2 安全性語法 163
7.2.3 請求許可權 164
7.2.4 使用安全類庫 171
7.2.5 使用託管包裝類 172
7.3 編寫安全類庫 172
7.3.1 安全要求 172
7.3.2 重寫安全檢查 175
7.3.3 用於類和成員範圍的聲明式安全 179
7.3.4 安全最佳化 180
7.3.5 安全透明的代碼 182
7.4 編寫安全託管控制項 184
7.4.1 開發 184
7.4.2 部署 184
7.5 創建自己的代碼訪問許可權 185
7.5.1 設計許可權 185
7.5.2 實現自定義許可權 186
7.5.3 添加聲明式安全支持 193
7.5.4 請求自定義許可權 194
7.5.5 更新安全策略 194
7.5.6 創建其他自定義許可權 195
7.6 小結 196
第8章 部分信任ASP.NET 197
8.1 為什麼選擇部分信任 197
8.2 配置部分信任 198
8.3 理解策略檔案 199
8.3.1 策略檔案的內容 199
8.3.2 策略程式集 201
8.3.3 命名許可權集 201
8.3.4 代碼組 202
8.3.5 修改策略檔案 203
8.3.6 自定義策略 204
8.4 堆疊審核 205
8.4.1 修改堆疊審核 205
8.4.2 堆疊修改實例介紹 206
8.5 SecurityException的作用 207
8.6 鎖定ASP.NET配置 211
8.7 在部分受信任的代碼中調用程式集 212
8.7.1 通過部分受信任的代碼使用庫 212
8.7.2 何時啟用部分受信任的調用方 213
8.7.3 通過部分受信任的代碼訪問共享庫 213
8.7.4 對APTCA程式集中的某些類型要求完全信任 214
8.7.5 標有APTCA的.NET Framework程式集 215
8.7.6 如何:讓部分受信任的代碼無法訪問APTCA程式集 215
8.7.7 從程式集中移除部分信任 216
8.8 小結 216
第9章 ASP.ENT Web服務安全機制 217
9.1 Web服務體系結構 217
9.1.1 Web服務分層架構 217
9.1.2 Web服務堆疊 218
9.2 Web服務安全模型 218
9.2.1 平台級安全性 218
9.2.2 應用程式級安全性 219
9.2.3 訊息級安全性 220
9.3 Web服務身份驗證和授權策略 221
9.3.1 帶模擬功能的Windows身份驗證 221
9.3.2 不帶模擬功能的Windows身份驗證 222
9.3.3 使用固定標識的Windows身份驗證 224
9.3.4 實現Web服務的Windows身份驗證配置 224
9.3.5 自定義SOAP身份驗證 229
9.3.6 用於授權的基於角色的安全 233
9.4 Web服務加密方法 236
9.4.1 SSL加密 236
9.4.2 SOAP加密 241
9.4.3 XML簽名與加密技術 246
9.5 Web服務配置安全策略 251
9.5.1 配置IIS設定 252
9.5.2 配置ASP.NET設定 253
9.5.3 保護資源安全 253
9.5.4 禁用HTTP-GET、HTTP-POST 253
9.6 Web服務安全通信 254
9.6.1 傳輸級安全通信 254
9.6.2 訊息級安全通信 255
9.7 小結 256
第10章 .NET Remoting安全機制 257
10.1 .NET Remoting體系結構 257
10.1.1 .NET Remoting簡介 258
10.1.2 .NET Remoting接收 266
10.1.3 ASP.NET和HTTP通道 269
10.1.4 .NET Remoting網關守衛 270
10.2 .NET Remoting的身份驗證與授權 271
10.2.1 將身份驗證駐留在ASP.NET中 271
10.2.2 將身份驗證駐留在Windows服務中 272
10.2.3 自定義.NET Remoting身份驗證 272
10.2.4 授權 272
10.2.5 身份驗證和授權策略 273
10.2.6 將身份驗證的憑據傳遞給遠程對象 274
10.2.7 傳遞原調用方 276
10.3 .NET Remoting資源訪問控制 278
10.3.1 系統資源訪問控制 278
10.3.2 網路資源訪問訪問 278
10.4 受信任的子系統模型 279
10.5 .NET Remoting安全通信 281
10.6 選擇.NET Remoting的主機進程 281
10.6.1 駐留在ASP.NET中 282
10.6.2 駐留在Windows服務中 282
10.6.3 駐留在控制台應用程式中 283
10.7 .NET Remoting與Web服務安全性比較 283
10.8 小結 284
第11章 資料庫訪問安全機制 285
11.1 資料庫訪問威脅與對策 285
11.1.1 SQL注入 286
11.1.2 配置數據的泄漏 287
11.1.3 敏感應用程式數據的泄漏 287
11.1.4 資料庫架構和連線詳細信息的泄漏 288
11.1.5 未授權訪問 288
11.1.6 網路偵聽 289
11.2 資料庫訪問編碼設計注意事項 289
11.3 輸入驗證 291
11.4 SQL注入 291
11.5 數據訪問身份驗證 293
11.5.1 使用Windows身份驗證 294
11.5.2 保護SQL身份驗證的憑據 294
11.5.3 使用最低特權賬戶連線 294
11.6 數據訪問授權 295
11.6.1 限制未授權的調用方 296
11.6.2 限制未授權的代碼 297
11.6.3 在資料庫中限制應用程式 297
11.7 數據訪問配置管理 297
11.7.1 使用Windows身份驗證 298
11.7.2 保護應用程式的連線字元串 298
11.7.3 用受限的ACL保護UDL檔案 299
11.8 保護敏感數據 299
11.8.1 對存儲的敏感數據加密 299
11.8.2 保護跨網路傳輸的敏感數據 300
11.8.3 存儲帶salt值的密碼散列值 300
11.9 數據訪問異常管理 301
11.9.1 捕獲和記錄ADO.NET異常 301
11.9.2 確保關閉資料庫連線 304
11.9.3 在ASP.NET應用程式中使用一般性錯誤頁 304
11.10 構建安全的數據訪問組件 305
11.11 代碼訪問安全性注意事項 307
11.12 資料庫伺服器部署注意事項 307
11.13 SQL Server安全性支持 308
11.13.1 SQL Server安全性概述 309
11.13.2 SQL Server中的身份驗證 310
11.13.3 SQL Server中的伺服器和資料庫角色 311
11.13.4 SQL Server中的所有權和用戶架構分離 312
11.13.5 SQL Server中的授權和許可權 314
11.13.6 SQL Server中的數據加密 315
11.13.7 SQL Server中的CLR集成安全性 316
11.14 保證ADO.NET的安全 316
11.14.1 ADO.NET的安全性概述 316
11.14.2 ADO.NET安全數據訪問 318
11.14.3 ADO.NET安全客戶端應用程式 319
11.14.4 代碼訪問安全性和ADO.NET 320
11.14.5 ADO.NET的隱私和數據安全 323
11.15 小結 324
第12章 ASP.NET的日誌和監測機制 325
12.1 錯誤處理 325
12.1.1 了解401非授權錯誤 325
12.1.2 錯誤處理 327
12.1.3 錯誤處理程式的完整示例 329
12.2 日誌和監測 337
12.2.1 事件日誌 337
12.2.2 性能監視器 345
12.2.3 電子郵件 345
12.2.4 ASP.NET跟蹤 345
12.2.5 日誌和部分信任 348
12.3 健康監測系統 349
12.3.1 創建自定義監視事件 349
12.3.2 配置健康檢測 353
12.3.3 SQL伺服器提供程式 357
12.3.4 WMI提供程式 359
12.3.5 電子郵件提供程式 363
12.3.6 緩衝事件提供程式 367
12.3.7 事件日誌提供程式 372
12.3.8 編寫自定義提供程式 373
12.3.9 狀態監視和部分信任 376
12.4 小結 382
第13章 構建安全的ASP.NET應用程式 383
13.1 總指導原則 383
13.2 作業系統強化 384
13.2.1 自動更新 385
13.2.2 禁用服務和協定 385
13.2.3 包過濾 388
13.2.4 保護Windows檔案共享 389
13.2.5 審核 394