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

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

3.

3.

Vô hi u vi c ki m tra quy n th c thi

ệ ể

Vô hi u vi c ki m tra quy n th c thi

ệ ể

Bạn cần ngăn bộ thực thi kiểm tra mỗi assembly được nạp vào có quyền thực thi
(execution permission
) hay không.

Thiết lập thuộc tính

CheckExecutionRights

của lớp

System.Security.

SecurityManager

false

rồi 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 –e off

.

Mỗi khi nạp assembly, bộ thực thi bảo đảm grant-set của assembly này có chứa phần tử

Execution

của

SecurityPermission

. Bộ thực thi hiện thực một quá trình phân giải chính sách

“lười” (lazy policy resolution process), nghĩa là grant-set của một assembly không được tính
cho đến khi có một yêu cầu bảo mật (security demand) được thực hiện trên assembly này.
Việc kiểm tra quyền thực thi không chỉ buộc bộ thực thi kiểm tra mỗi assembly có quyền thực
thi hay không, mà còn gián tiếp tạo ra việc phân giải chính sách đối với mỗi assembly được
nạp, phủ nhận lợi ích của việc phân giải chính sách “lười”. Các yếu tố này có thể gây ra sự trì
hoãn đáng kể khi các assembly được nạp, đặc biệt khi bộ thực thi nạp nhiều assembly cùng
một lúc.
Trong nhiều trường hợp, việc cho phép mã lệnh nạp và chạy không phải là một nguy cơ đáng
kể miễn là tất cả các hoạt động và các tài nguyên quan trọng khác đã được bảo vệ bằng CAS
và bằng cơ chế bảo mật của hệ điều hành. Bộ thực thi .NET cho phép bạn vô hiệu việc tự động
kiểm tra các quyền thực thi ngay bên trong mã lệnh, hay bằng công cụ Caspol.exe.
Khi bạn nhập lệnh

caspol –e off

hoặc

caspol –e on

, Caspol.exe sẽ xác lập thuộc tính

CheckExecutionRights

của lớp

SecurityManager

. Bạn có thể thực hiện công việc này bên

trong mã lệnh như sau:

// Vô hiệu việc kiểm tra quyền thực thi.

System.Security.SecurityManager.CheckExecutionRights = false;

// Lưu cấu hình.

System.Security.SecurityManager.SavePolicy();

// Kích hoạt việc kiểm tra quyền thực thi.

System.Security.SecurityManager.CheckExecutionRights = true;

// Lưu cấu hình.

System.Security.SecurityManager.SavePolicy();

Để thay đổi giá trị của

CheckExecutionRights

thì mã lệnh của bạn phải có phần tử

ControlPolicy

của

SecurityPermission

. Thay đổi này sẽ có tác dụng với tiến trình hiện hành

ngay tức thì, cho phép bạn nạp các assembly trong lúc thực thi mà bộ thực thi không 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.