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

519

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

5.

5.

Gi i h n các quy n đ

c c p cho assembly

ớ ạ

ề ượ ấ

Gi i h n các quy n đ

c c p cho assembly

ớ ạ

ề ượ ấ

Bạn cần hạn chế các quyền truy xuất mã lệnh được cấp cho assembly của bạn,
đảm bảo người khác và phần mềm khác không thể biên mã lệnh của bạn thanh
một cơ chế mà thông qua đó để thực hiện các hành động nguy hiểm hay không
mong muốn.

Sử dụng các lệnh bảo mật khai báo (declarative security statement) để chỉ định
các yêu cầu quyền tùy chọn (optional permission request
) và các yêu cầu loại trừ
quyền (permission refusal request
) trong assembly của bạn. Các yêu cầu quyền
tùy chọn định nghĩa tập tối đa các quyền mà bộ thực thi sẽ cấp cho assembly.
Các yêu cầu loại trừ quyền chỉ định các quyền cụ thể mà bộ thực thi sẽ không
cấp cho assembly.

Nếu quan tâm đến bảo mật, thật lý tưởng khi mã lệnh của bạn chỉ có các quyền truy xuất mã
lệnh cần thiết để thực hiện chức năng của nó. Điều này giảm thiểu nguy cơ người khác và mã
lệnh khác sử dụng mã lệnh của bạn để thực hiện các hành động nguy hiểm hay không mong
muốn. Vấn đề là, bộ thực thi phân giải các quyền của một assembly bằng chính sách bảo mật
(do một người dùng nào đó hay người quản trị cấu hình). Chính sách bảo mật có thể khác
nhau tại mỗi nơi mà ứng dụng chạy, và bạn không thể kiểm soát các quyền mà chính sách bảo
mật ấn định cho mã lệnh của bạn.
Mặc dù bạn không thể kiểm soát chính sách bảo mật tại tất cả các nơi mà mã lệnh chạy, nhưng
.NET Framework cung cấp hai cơ chế mà thông qua đó, bạn có thể loại bỏ các quyền được
cấp cho assembly của bạn: yêu cầu loại trừ (refuse request) và yêu cầu tùy chọn (optional
request
). Yêu cầu loại trừ cho phép bạn chỉ ra các quyền cụ thể mà bạn không muốn bộ thực
thi cấp cho assembly. Sau quá trình phân giải chính sách, nếu grant-set của một assembly
chứa bất kỳ quyền nào đã được chỉ định trong một yêu cầu loại trừ, bộ thực thi sẽ loại bỏ
quyền đó. Yêu cầu tùy chọn định nghĩa tập tối đa các quyền mà bộ thực thi có thể cấp cho
assembly. Nếu grant-set của một assembly chứa bất kỳ quyền nào khác với các quyền đã được
chỉ định trong yêu cầu tùy chọn, bộ thực thi sẽ loại bỏ quyền đó. Khác với yêu cầu quyền tối
thiểu (đã được thảo luận trong mục 13.4), bộ thực thi sẽ không từ chối nạp assembly cua bạn
nếu nó không thể cấp tất cả các quyền đã được chỉ định trong yêu cầu tùy chọn.
Bạn có thể coi yêu cầu loại trừ và yêu cầu tùy chọn là các cách chọn lựa để thu được cùng kết
quả; cách mà bạn sử dụng tùy thuộc vào số lượng quyền bạn muốn loại bỏ. Nếu muốn loại bỏ
môt sô ít quyền, bạn hãy chọn yêu cầu loại trừ. Tuy nhiên, nếu muốn loại bỏ nhiều quyền, bạn
hãy chọn yêu cầu tùy chọn (yêu câu này gôm một sô quyền bạn cân, phân quyền con lại se tư
đông bi loại bo).
Bạn thêm các yêu cầu tùy chọn và yêu cầu loại trừ vào mã lệnh bằng các lệnh bảo mật khai
báo với cú pháp giống như các yêu cầu quyền tối thiểu đã được thảo luận trong mục 13.4.
Điểm khác biệt duy nhất là giá trị của

System.Security.Permissions.SecurityAction

mà bạn

truyền cho phương thức khởi dựng của đặc tính quyền. Sử dụng

SecurityAction.RequestOptional

để khai báo một yêu cầu tùy chọn và

SecurityAction.RequestRefuse

để khai báo một yêu cầu loại trừ. Cũng giống như các yêu

cầu quyền tối thiểu, bạn phải khai báo các yêu cầu tùy chọn và yêu cầu loại trừ là các đặc tính
toàn cục bằng cách thêm tiền tố

assembly:

vào tên đặc tính. Ngoài ra, tất cả các yêu cầu phải

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.