程式碼組(2)成員條件
程式碼組(2) 成員條件
在建立程式碼組的過程中,簡要熟悉了程式碼組的成員條件,在安全策略的實施過程中,可以認為,所有符合該程式碼組成員條件的程式集都屬於該程式碼組。成員條件的實現形式是型別,每種成員條件對應一種型別。
所有程式碼
“所有程式碼”表示匹配所有程式碼的成員條件,該成員條件的實現類是AllMembershipCondition類。該成員條件通常用於策略級別的根程式碼組,以便將該策略應用於所有程式碼。AllMembershipCondition的類定義如程式碼清單4-6所示。
程式碼清單2-1 AllMembershipCondition類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed classAllMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
AllMembershipCondition類繼承了三個介面:
IMembershipCondition介面:定義測試以確定程式碼程式集是否是程式碼組的成員。該介面的Check方法用來確定指定的證據是否能滿足成員條件。
ISecurityEncodable介面:定義使許可權物件狀態與 XML 元素表示形式進行相互轉換的方法。任何自定義許可權都必須實現此介面。該介面的FromXml方法用 XML 編碼重新構造具有指定狀態的安全物件,ToXml方法建立安全物件及其當前狀態的 XML 編碼。
ISecurityPolicyEncodable介面:支援使許可權物件狀態與 XML 元素表示形式進行相互轉換的方法。該介面與ISecurityEncodable介面相似,不同的是它包含策略級上下文,解析對命名許可權集的引用時需要策略級上下文資訊。ISecurityPolicyEncodable介面也提供了FromXml和ToXml方法,功能與ISecurityEncodable介面相同。
應用程式目錄
“應用程式目錄”成員條件通過測試程式集的應用程式目錄確定該程式集是否屬於程式碼組。該成員條件的實現類是ApplicationDirectoryMembershipCondition 類,該類定義如程式碼清單2-2所示。
程式碼清單2-2 ApplicationDirectoryMembershipCondition 類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class ApplicationDirectoryMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
ApplicationDirectoryMembershipCondition可確定 ApplicationDirectory 屬性是否包含程式集 URL 證據路徑。例如,如果 ApplicationDirectory 是 C:app1,則具有 URL 證據的程式集(例如C:app1、C:app1main.aspx、C:app1folder1 或 C:app1folder1main1.aspx)符合該成員條件。不在C:app1 目錄中或其子目錄之一中的程式碼未能通過成員條件測試。沒有 ApplicationDirectory 或 URL 證據的程式碼總是不能通過成員條件測試。
雜湊
“雜湊”成員條件通過測試程式集的雜湊值確定該程式集是否屬於程式碼組。該成員條件的實現類是HashMembershipCondition類,該類的定義如程式碼清單4-8所示。
程式碼清單2-3 HashMembershipCondition類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed classHashMembershipCondition : ISerializable, IDeserializationCallback, IMembershipCondition,
ISecurityEncodable, ISecurityPolicyEncodable
HashMembershipCondition類比AllMembershipCondition類多實現了兩個介面:
ISerializable介面:允許物件控制其自己的序列化和反序列化過程。
IDeserializationCallback介面:指示在完成整個物件的反序列化時的通知類。
發行者
“發行者”成員條件通過測試程式集的軟體發行者 Authenticode X.509v3 證書確定程式集是否屬於程式碼組。該成員條件的實現類是PublisherMembershipCondition類,該類的定義如程式碼清單2-3所示。
程式碼清單2-3 PublisherMembershipCondition類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class PublisherMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
PublisherMembershipCondition類有一個名為Certificate的公共屬性,用類獲取或設定要針對其測試成員條件的 Authenticode X.509v3 證書。
站點
“站點”成員條件通過測試從其中產生程式集的站點以確定該程式集是否屬於程式碼組,其中程式碼可出自 HTTP站點、HTTPS 站點和 FTP 站點。該成員條件的實現類為SiteMembershipCondition類,該類的定義如程式碼清單2-4所示。
程式碼清單2-4 SiteMembershipCondition類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class SiteMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
如果該程式碼源於由 Site 指定的網站,則程式碼程式集滿足站點成員條件。站點是位於 URL 協議識別符號後面的“//”和後面的“/”(如果存在)之間的字串。例如,www.xuanhun.com 是 URL http://www.xuanhun.com/process/grind.htm 的站點標識,這不包括埠號。如果給定的 URL 是http://www.xuanhun.com:8000/,則站點為 www.xuanhun.com,而非 www.fourthcoffee.com:8000。
站點可以完全匹配,也可以通過在點分隔符位置使用萬用字元(“*”)字首進行匹配。例如,站點名稱*.xuanhun.com 與 xuanhun.com 和 www.xuanhun.com 匹配。如果沒有萬用字元,則站點名稱必須是精確匹配。站點名稱 * 將與所有站點匹配,但不會與無站點證據的程式碼匹配。
強名稱
“強名稱”成員條件通過測試程式集的強名稱確定該程式集是否屬於程式碼組。該成員條件的實現類為StrongNameMembershipCondition類,該類的定義如程式碼清單2-5所示。
程式碼清單2-5 StrongNameMembershipCondition類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StrongNameMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
強名稱非常適合於指定你給予了大量的、非常大許可權的程式碼程式集。由於強名稱以加密方式驗證,所以,攻擊者無法模擬合法的程式集和使用它們的許可權。
該類提供了三個屬性:
Name屬性用來獲取或設定要針對其測試成員條件的 StrongName 的簡單名稱。
PublicKey屬性用來獲取或設定要針對其測試成員條件的 StrongName 的 StrongNamePublicKeyBlob。
Version屬性用來獲取或設定要針對其測試成員條件的 StrongName 的 Version。
URL
“URL”成員條件通過測試程式集的URL確定該程式集是否屬於程式碼組。該成員條件的實現類是UrlMembershipCondition類,該類的定義如程式碼清單2-6所示。
程式碼清單2-6 UrlMembershipCondition類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed classUrlMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
可以使用完整的 URL作為條件,包括協議(HTTP、HTTPS、FTP)和檔案。例如,http://www.fourthcoffee.com/process/grind.htm 就是一個完整的 URL。
也可在最後一個位置使用萬用字元來匹配。例如,http://www.fourthcoffee.com/process/* 就是一個含萬用字元的 URL。
UrlMembershipCondition類含有一個公共屬性Url用來獲取或設定要針對其測試成員條件的 URL。
區域
“區域”成員條件通過測試程式集的原始區域確定該程式集是否屬於程式碼組。該成員條件的實現類為ZoneMembershipCondition類,該類的定義如程式碼清單2-7所示。
程式碼清單2-7 ZoneMembershipCondition類定義
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed classZoneMembershipCondition : IMembershipCondition, ISecurityEncodable, ISecurityPolicyEncodable
ZoneMembershipCondition類只能在源於特定區域的 .NET 程式集和 Web 服務中使用。例如MyComputer、Intranet 和Internet這些區域。
通過程式碼訪問安全策略工具來更改程式碼組成員條件的方法如下:
caspol -chggroup 1.2.1. -zone Internet
其中,使用chggroup命令更改標籤為1.2.1的程式碼組的區域為Internet。
仍然可以使用.NET Framework配置工具來修改程式碼組的成員條件。
本文轉自懸魂部落格園部落格,原文連結:http://www.cnblogs.com/xuanhun/archive/2012/06/23/2559398.html,如需轉載請自行聯絡原作者
相關文章
- 條件迴圈語句組成了Python程式碼的骨架Python
- 如何實現條件組合元件元件
- 刪除日誌組成員
- 小組成員的github地址Github
- 8,javase程式碼實戰-條件語句——為高階職員分配職位(三)Java
- 專案小組成員介紹
- 匯出Wireless組中的成員
- 程式碼優化-多型代替IF條件判斷優化多型
- Linux 核心開發組成員合照Linux
- 組合(巢狀)的 補充,主動呼叫其他成員 以及特殊成員巢狀
- Python 工匠:編寫條件分支程式碼的技巧Python
- 針對neumann邊界條件的差分法程式碼
- 【Django】組合條件的搜尋功能實現Django
- Mysql索引的使用-組合索引+跳躍條件MySql索引
- 程式的組成部分
- 刪除日誌檔案組或成員
- 【rac】實驗三:增加日誌組成員
- 網管員注意:保障郵件安全的七條措施
- 程式碼簽名證書組成部分有哪些
- javascript對於if條件語句程式碼的優化方式JavaScript優化
- java中的成員內部類,程式碼截圖Java
- thinkphp-條件判斷-if標籤2PHP
- webpack2生成程式碼分析Web
- Git.Framework 框架隨手記--ORM條件組合GitFramework框架ORM
- 【招募】看雪 Android 安全小組招募成員Android
- 在ASM下增加一個日誌組成員ASM
- 微信小程式-檢視條件渲染微信小程式
- 幾個程式觸發條件(zt)
- DBWn程式觸發4個條件
- 程式返回條件的0和1
- 前端業務程式碼配置化處理條件判斷邏輯前端
- 使用SSH完成條件及分頁查詢的主要程式碼
- 重構遺留程式碼(3):複雜的條件語句
- 程式碼簽名體系結構由哪些組成
- 程式語言基本組成
- canvas系列教程之多線條組成圖形Canvas
- 包教包會!7段程式碼帶你玩轉Python條件語句(附程式碼)Python
- RHCSA題解(五) - 建立使用者、組 和組成員及其關係