程式碼組(2)成員條件

吞吞吐吐的發表於2017-10-19

程式碼組(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介面也提供FromXmlToXml方法,功能與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:app1C:app1main.aspxC: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作為條件,包括協議(HTTPHTTPSFTP)和檔案。例如,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 服務中使用。例如MyComputerIntranet 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,如需轉載請自行聯絡原作者


相關文章