.NET Framework 以托管程式碼與公共語言執行平台 (CLR) 為核心,提供記憶體安全、型別安全、程式碼存取安全性 (CAS) 等內建防護,並建立「使用者安全性」與「程式碼安全性」雙軌授權模型,構建企業級應用的安全基石。
| 機制 | 防護目標 | 運作方式 |
|---|---|---|
| PE 檔案格式與中繼資料驗證 | 惡意二進位檔案、緩衝區溢位 | CLR 載入時驗證 PE 結構完整性、位址邊界、中繼資料一致性 |
| MSIL 型別安全驗證 | 指標操作濫用、型別混淆、陣列越界 | JIT 編譯前驗證 IL 指令流,消除托管碼緩衝區溢位可能 (非托管互操作除外) |
| 強名稱完整性驗證 | 組件竄改、偽造 | 數位簽章驗證組件自建置後未被修改,攻擊者無法直接修改 IL 指令 |
| 程式碼存取安全性 (CAS) | 惡意碼濫用系統資源 | 依據程式碼證據 (強名稱、發行者、區域) 授予權限集合,限制檔案/登錄/網路/反射/非托管呼叫等特權操作 |
核心問題:「使用者是誰?能做什麼操作?」
HttpContext.Current.User),實作 IPrincipal,包含 Identity (姓名、驗證類型、IsAuthenticated) 與角色清單。PrincipalPermission 屬性或命令式檢查。核心問題:「程式碼從哪來?誰寫的?能做什麼特權操作?」
[PrincipalPermission(SecurityAction.Demand, Role = @"DOMAIN\Managers")]
public sealed class OnlyManagersCanCallMe { }
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public void SomeMethod() { }
new PrincipalPermission(null, @"DOMAIN\WindowsGroup").Demand();
BUILTIN\Administrators、BUILTIN\Users、BUILTIN\Power Users 等。DOMAIN\GroupName。.NET 安全架構將作業系統級防護 (DEP、ASLR、CFG) 與執行階段級防護 (型別安全、CAS、角色授權) 深度整合,配合安全開發生命週期 (SDL) 實踐,是建構高韌性企業應用的堅實基石。