首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET 程式碼存取安全性:代碼組成員條件完整分類與實作類別

     編輯:關於.NET

前言

代碼組的成員條件決定哪些組件屬於該代碼組。每種條件對應一個實作 IMembershipCondition 介面的密封類別。本文系統整理所有 8 種標準成員條件的類別定義、屬性與適用場景。

成員條件類別繼承架構

所有條件類別均實作三個核心介面:

  • IMembershipCondition:Check(Evidence) 判斷組件是否符合
  • ISecurityEncodable:ToXml()/FromXml() XML 序列化
  • ISecurityPolicyEncodable:含策略層級上下文的 XML 序列化

八大標準成員條件詳細解析

1. AllMembershipCondition - 所有代碼

[Serializable, ComVisible(true)]
public sealed class AllMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 匹配所有組件,Check() 永遠回傳 true
  • 通常用於策略層級根代碼組,確保策略適用於所有代碼
  • 無額外屬性

2. ApplicationDirectoryMembershipCondition - 應用程式目錄

[Serializable, ComVisible(true)]
public sealed class ApplicationDirectoryMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 驗證組件 URL 證據路徑是否位於 ApplicationDirectory 屬性指定目錄或其子目錄
  • 範例:ApplicationDirectory = C:\app1 → 符合 C:\app1、C:\app1\main.aspx、C:\app1\folder1\main1.aspx
  • 無 ApplicationDirectory 或 URL 證據的代碼永遠不符合

3. HashMembershipCondition - 雜湊值

[Serializable, ComVisible(true)]
public sealed class HashMembershipCondition : ISerializable, IDeserializationCallback, IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 額外實作 ISerializable、IDeserializationCallback
  • 支援 SHA1、MD5 雜湊演算法
  • 適用於精確識別特定組件版本,防範竄改
  • 屬性:HashAlgorithm、HashValue

4. PublisherMembershipCondition - 發行者 (Authenticode 簽章)

[Serializable, ComVisible(true)]
public sealed class PublisherMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 驗證組件的 Authenticode X.509v3 憑證
  • 核心屬性:Certificate (X509Certificate)
  • 適用於信任特定發行者的所有組件 (不限版本)
  • 需組件經過數位簽章

5. SiteMembershipCondition - 站台

[Serializable, ComVisible(true)]
public sealed class SiteMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 從 URL 擷取站台識別:https://www.example.com/path → www.example.com
  • 不包含連接埠號:https://www.example.com:8000/ → 站台仍為 www.example.com
  • 支援萬用字元前綴:*.example.com 匹配 www.example.com、api.example.com
  • * 匹配所有有站台證據的代碼

6. StrongNameMembershipCondition - 強式名稱

[Serializable, ComVisible(true)]
public sealed class StrongNameMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 驗證組件強式名稱 (公開金鑰 + 名稱 + 版本)
  • 三大屬性:
    • Name:簡單名稱
    • PublicKey:StrongNamePublicKeyBlob
    • Version:版本號
  • 加密驗證,攻擊者無法偽造
  • 適合授予高權限給特定受信組件

7. UrlMembershipCondition - URL

[Serializable, ComVisible(true)]
public sealed class UrlMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 完整 URL 比對:https://www.example.com/path/file.dll
  • 支援尾端萬用字元:https://www.example.com/path/*
  • 屬性:Url (字串)
  • 適用於特定部署位置的組件

8. ZoneMembershipCondition - 區域

[Serializable, ComVisible(true)]
public sealed class ZoneMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
  • 五大區域:MyComputer、Intranet、Internet、TrustedSites、UntrustedSites
  • 依據 IE 安全性區域設定判斷
  • 僅適用於 .NET 組件與 Web 服務
  • 屬性:SecurityZone (SecurityZone 列舉)

Caspol.exe 修改成員條件指令

# 將標籤 1.2.1 代碼組的區域條件設為 Internet
caspol -chggroup 1.2.1 -zone Internet

# 其他條件類似:-site、-url、-strongname、-hash、-publisher、-appdir、-all

選擇指南

條件安全性彈性適用場景
StrongName最高 (加密)低 (版本綁定)核心信任組件、高權限授予
Publisher高 (憑證鏈)中 (同發行者所有版本)企業內部套件、ISV 產品
Hash高 (內容綁定)極低 (逐版本更新)關鍵系統組件防竄改
Url/Site中 (部署位置)高 (萬用字元)內部部署應用、Intranet 應用
Zone低 (瀏覽器設定)高 (大範圍)預設安全性層級
ApplicationDirectory中中ClickOnce、XBAP 應用

作者:玄魂

出處:https://www.cnblogs.com/xuanhun/

查看本欄目

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved