514
Chương 13: Bảo mật
Nếu sau khi áp dụng
AllowPartiallyTrustedCallersAttribute
cho assembly, bạn muốn mã
lệnh có-độ-tin-cậy-một-phần chỉ gọi được một số thành viên nào đó, bạn cần bổ sung
LinkDemand
cho tập quyền
FullTrust
trên các thành viên cần thiết, như được trình bày trong
đoạn mã dưới đây:
[System.Security.Permissions.PermissionSetAttribute
(System.Security.Permissions.SecurityAction.LinkDemand,
Name="FullTrust")]
public void SomeMethod() {
§
}
2.
2.
Vô hi u b o m t truy xu t mã l nh
ệ ả ậ
ấ
ệ
Vô hi u b o m t truy xu t mã l nh
ệ ả ậ
ấ
ệ
Bạn cần vô hiệu CAS.
Thiết lập thuộc tính
SecurityEnabled
của lớp
System.Security.SecurityManager
là
false
và lưu lại bằng phương thức
SecurityManager.SavePolicy
. Bạn cũng có thể
sử dụng công cụ Code Access Security Policy (Caspol.exe) và thực thi lệnh
caspol
–s off
.
CAS là phần then chốt trong mô hình bảo mật của bộ thực thi .NET, và cũng là phần đặc trưng
của nền tảng .NET mà nhiều nền tảng khác không có. Mặc dù CAS được xây dựng với tiêu chí
đảm bảo hiệu năng thực thi cao nhất và đã được sử dụng một cách cẩn trọng trong thư viện
lớp .NET, nhưng vẫn có một chi phí cho mỗi yêu cầu bảo mật (security demand) và stack walk
(kết quả) mà bộ thực thi phải thực hiện.
Đôi lúc, bảo mật mức-mã-lệnh có thể không là điều bạn bận tâm, hoặc nhu cầu hiệu năng có
thể vượt quá nhu cầu CAS. Trong các trường hợp này, bạn có thể vô hiệu hoàn toàn CAS và
loại bỏ chi phí cho việc kiểm tra bảo mật mức-mã-lệnh. Vô hiệu CAS có tác dụng trao cho mã
lệnh khả năng thực hiện bất kỳ hành động nào mà .NET Framework hỗ trợ (tương đương với
tập quyền
FullTrust
), bao gồm khả năng nạp mã lệnh khác, gọi các thư viện nguyên sinh, và
sử dụng con trỏ để trực tiếp truy xuất bộ nhớ.
Bạn chỉ nên vô hiệu CAS vì các lý do hiệu năng sau khi đã tiêu hết tất cả các
chừng mực có thể khác để đạt được các đặc điểm hiệu năng mà ứng dụng của
bạn đòi hỏi. Việc lập profile cho mã lệnh thường sẽ nhận biết những vùng mà
bạn có thể cải thiện đáng kể hiệu năng nhưng không phải vô hiệu CAS. Ngoài ra,
bạn cần bảo đảm các tài nguyên hệ thống đã được bảo vệ bằng các cơ chế bảo
mật của hệ điều hành (như Windows ACLs) trước khi vô hiệu CAS.
Caspol.exe là một tiện ích được cấp cùng với .NET Framework, cho phép bạn cấu hình chính
sách bảo mật truy xuất mã lệnh từ dòng lệnh. Khi bạn nhập lệnh
caspol –s off
hoặc
caspol
–s on
, tiện ích này sẽ xác lập thuộc tính
SecurityEnabled
của lớp
SecurityManager
. Lớp
SecurityManager
cung cấp tập các phương thức tĩnh để truy xuất dữ liệu và chức năng bảo