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

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

Sử dụng các lệnh bảo mật khai báo (declarative security statement) để áp dụng
thành viên

SecurityAction.InheritanceDemand

vào phần khai báo của các lớp và

các thành viên bạn cần bảo vệ.

Các modifier như

sealed

,

public

,

private

, và

virtual

cho phép bạn kiểm soát khả năng của

các lớp khác khi các lớp này thừa kế lớp của bạn và chép đè các thành viên của nó. Tuy nhiên,
các modifier này không linh hoạt, không có khả năng chọn lọc khi giới hạn những mã lệnh
nào có thể thừa kế một lớp hoặc chép đè các thành viên của nó. Ví dụ, bạn muốn chỉ những
mã lệnh do công ty hay khoa của bạn viết thì mới có thể thừa kế các lớp nghiệp vụ quan trọng,
hoặc chỉ những mã lệnh được nạp từ máy cục bộ thì mới có thể thừa kế các phương thức nào
đó. Bằng cách áp dụng

InheritanceDemand

vào khai báo lớp hay thành viên, bạn có thể chỉ

định các quyền (lúc thực thi) mà một lớp phải có thì mới có thể thừa kế lớp của bạn hoặc chép
đè các thành viên cụ thể nào đó. Nhớ rằng, các quyền của một lớp là các quyền của assembly
mà lớp này được khai báo trong đó.
Mặc dù bạn có thể yêu cầu bất kỳ quyền hay tập quyền nào trong

InheritanceDemand

, nhưng

thông thường là yêu cầu các quyền định danh (identity permission). Quyền định danh mô tả
chứng cứ (evidence) do một assembly đưa cho bộ thực thi. Nếu một assembly đưa ra các kiểu
chứng cứ nào đó lúc nạp, bộ thực thi sẽ tự động gán cho assembly này quyền định danh phù
hợp. Quyền định danh cho phép bạn sử dụng các lệnh bảo mật bắt buộc và khai báo
(imperativedeclarative security statement) để trực tiếp ra các quyết định bảo mật (security
decision
) căn cứ trên định danh mã (code identity) mà không cần trực tiếp đánh giá các đối
tượng chứng cứ. Bảng 13-1 liệt kê kiểu quyền định danh được tạo cho mỗi kiểu chứng cứ
(kiểu chứng cứ là thành viên của không gian tên

System.Security.Policy

, kiểu quyền định

danh là thành viên của không gian tên

System.Security.Permissions

).

Bảng 13.1 Các lớp chứng cứ và các quyền định danh

Lớp chứng cứ

Quyền định danh

ApplicationDirectory

Không

Hash

Không

Publisher

PublisherIdentityPermission

Site

SiteIdentityPermission

StrongName

StrongNameIdentityPermission

Url

UrlIdentityPermission

Zone

ZoneIdentityPermission

Bộ thực thi gán các quyền định danh cho một assembly dựa trên chứng cứ do
assembly này đưa ra. Bạn không thể gán thêm quyền định danh cho một
assembly thông qua việc cấu hình chính sách bảo mật.

Bạn phải sử dụng cú pháp bảo mật khai báo (declarative security syntax) để hiện thực một

InheritanceDemand

, nên bạn phải sử dụng bản sao đặc tính (attribute counterpart) của lớp

quyền mà bạn muốn yêu cầu. Tất cả các lớp quyền đều có một bản sao đặc tính để tạo các

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.