525
Chương 13: Bảo mật
lệnh bảo mật khai báo—bao gồm
InheritanceDemand
. Ví dụ, bản sao đặc tính của
PublisherIdentityPermission
là
PublisherIdentityPermissionAttribute
, và bản sao đặc
tính của
StrongNameIdentityPermission
là
StrongNameIdentityPermissionAttribute
—tất cả
các quyền và các bản sao đặc tính của chúng cùng theo quy ước đặt tên và là các thành viên
của cùng không gian tên.
Để kiểm soát những mã lệnh nào có thể thừa kế lớp của bạn, hãy áp dụng
InheritanceDemand
khi khai báo lớp. Đoạn mã dưới đây trình bày một lớp được bảo vệ bằng
InheritanceDemand
.
Theo đó, chỉ những lớp bên trong các assembly được ký bởi publisher-certificate (nằm trong
file pubcert.cer) thì mới có thể thừa kế lớp
InheritanceDemandExample
. Nội dung của file
pubcert.cer được đọc lúc biên dịch, và các thông tin chứng thực cần thiết được gắn vào
assembly.
[PublisherIdentityPermission(SecurityAction.InheritanceDemand,
CertFile = @"I:\CSharp\Chuong13\pubcert.cer")]
public class InheritanceDemandExample {
§
}
Để kiểm soát những mã lệnh nào có thể chép đè các thành viên nào đó, bạn hãy áp dụng
InheritanceDemand
khi khai báo thành viên. Xét đoạn mã dưới đây, chỉ những lớp được cấp
tập quyền
FullTrust
thì mới có thể chép đè phương thức
SomeProtectedMethod
.
[PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust")]
public void SomeProtectedMethod () {
§
}
9.
9.
Ki m tra ch ng c c a m t assembly
ể
ứ
ứ ủ ộ
Ki m tra ch ng c c a m t assembly
ể
ứ
ứ ủ ộ
Bạn cần kiểm tra chứng cứ mà bộ thực thi đã gán cho một assembly.
Thu lấy đối tượng
System.Reflection.Assembly
mô tả assembly mà bạn quan
tâm. Lấy tập hợp
System.Security.Policy.Evidence
từ thuộc tính
Evidence
của
đối tượng
Assembly
, rồi truy xuất các đối tượng chứng cứ bên trong bằng phương
thức
GetEnumerator
,
GetHostEnumerator
, hay
GetAssemblyEnumerator
của lớp
Evidence
.
Lớp
Evidence
mô tả một tập hợp các đối tượng chứng cứ. Thuộc tính chỉ-đọc
Evidence
của
lớp
Assembly
trả về một đối tượng tập hợp
Evidence
chứa tất cả các đối tượng chứng cứ mà bộ
thực thi đã gán cho assembly khi assembly này được nạp.
Thật ra, lớp
Evidence
chứa hai tập hợp, mô tả hai kiểu chứng cứ khác nhau: chứng cứ host và
chứng cứ assembly. Chứng cứ host bao gồm các đối tượng chứng cứ được gán cho assembly
bởi bộ thực thi hay mã lệnh đã nạp assembly (mã lệnh này là đáng tin cậy). Chứng cứ
assembly mô tả các đối tượng chứng cứ tùy biến được nhúng vào assembly lúc tạo dựng. Lớp
Evidence
hiện thực ba phương thức sau đây để liệt kê các đối tượng chứng cứ bên trong:
•
GetEnumerator