CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 534

534
Chương 13: Bảo mật

// nó trùng khớp với tất cả code. Điều này nghĩa là tất cả

// các assembly đều khởi đầu với một grant-set rỗng cho

// mức chính sách miền ứng dụng.

policy.RootCodeGroup = new FirstMatchCodeGroup(

new AllMembershipCondition(),

new PolicyStatement(policy.GetNamedPermissionSet("Nothing"))

);

// Tạo tập các code group để xác định các quyền nào sẽ được cấp

// cho một assembly do một publisher tạo ra. Vì code group gốc

// là một FirstMatchCodeGroup, nên quá trình phân giải chính sách

// chỉ so trùng assembly trên các group con cho đến khi tìm thấy

// trùng khớp đầu tiên. Mỗi code group được tạo với đặc tính

// Exclusive để bảo đảm rằng assembly không lấy thêm quyền

// nào từ các code group khác.

// Tạo code group cấp tập quyền FullTrust cho các

// assembly được phát hành bởi Microsoft.

X509Certificate microsoftCert =

X509Certificate.CreateFromCertFile("microsoft.cer");

policy.RootCodeGroup.AddChild(new UnionCodeGroup(

new PublisherMembershipCondition(microsoftCert),

new PolicyStatement(policy.GetNamedPermissionSet("FullTrust"),

PolicyStatementAttribute.Exclusive)

));

// Tạo code group cấp tập quyền Internet cho các

// assembly được phát hành bởi Litware, Inc.

X509Certificate litwareCert =

X509Certificate.CreateFromCertFile("litware.cer");

policy.RootCodeGroup.AddChild(new UnionCodeGroup(

new PublisherMembershipCondition(litwareCert),

new PolicyStatement(policy.GetNamedPermissionSet("Internet"),

PolicyStatementAttribute.Exclusive)