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

513

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

hội sử dụng các tính năng của assembly cho các mục đích nguy hiểm, và không thể khảo sát
assembly để tìm các lỗ hổng có thể khai thác được. Dĩ nhiên, lý thuyết này giả định rằng bạn
quản lý chính sách bảo mật một cách phù hợp. Nếu bạn gán tất cả mã lệnh có độ tin cậy toàn
phần, không chỉ bất kỳ assembly nào cũng có thể truy xuất assembly tên mạnh của bạn, mà
mã lệnh này còn có thể truy xuất tất cả các chức năng của .NET Framework. Điều này sẽ là
một tai họa bảo mật!

Nếu bạn thiết kế, hiện thực, và thử nghiệm assembly chia sẻ của bạn một cách
phù hợp bằng CAS
để giới hạn việc truy xuất đến các thành viên quan trọng, bạn
không cần áp đặt một hạn chế bao trùm để ngăn mã lệnh có-độ-tin-cậy-một-
phần sử dụng assembly của bạn. Tuy nhiên, đối với một assembly bất kỳ, không
thể chứng minh rằng không có lỗ hổng bảo mật nào để mã nguy hiểm có thể lợi
dụng. Do đó, bạn nên xem xét cẩn thận nhu cầu cho phép mã lệnh có-độ-tin-cậy-
một-phần truy xuất assembly tên mạnh trước khi áp dụng đặc tính

AllowPartiallyTrustedCallersAttribute

.

Bộ thực thi ngăn mã lệnh có-độ-tin-cậy-một-phần truy xuất các assembly tên mạnh bằng cách
đặt

LinkDemand

vào tập quyền

FullTrust

trên mọi thành viên công-khai (public) và được-bảo-

vệ (protected) của mỗi kiểu khả-truy-xuất-công-khai được định nghĩa trong assembly. Điều
này có nghĩa là chỉ những assembly được cấp các quyền tương đương với tập quyền

FullTrust

thì mới có thể truy xuất các kiểu và thành viên trong assembly tên mạnh. Việc áp

dụng

AllowPartiallyTrustedCallersAttribute

vào assembly tên mạnh báo với bộ thực thi

không buộc

LinkDemand

có hiệu lực trên các thành viên và các kiểu bên trong.

Bộ thực thi chịu trách nhiệm buộc các hoạt động bảo mật ngầm

LinkDemand

hiệu lực để bảo vệ các assembly tên mạnh; C# assembler không sinh ra các lệnh
khai báo

LinkDemand

lúc biên dịch.

Đoạn mã dưới đây trình bày một ứng dụng có sử dụng đặc tính

AllowPartiallyTrustedCallersAttribute

. Chú ý rằng, bạn phải sử dụng tiền tố

assembly:

để

báo với trình biên dịch rằng đích của đặc tính này là assembly (còn được gọi là đặc tính toàn
cục—global attribute). Ngoài ra, không cần thêm phần

Attribute

vào tên của đặc tính—mặc

dù bạn có thể thêm vào nếu muốn. Vì bạn nhắm đến assembly nên đặc tính này phải được đặt
sau các lệnh

using

mức trên, nhưng trước các khai báo không gian tên và kiểu.

using System.Security;

[assembly:AllowPartiallyTrustedCallers]

public class AllowPartiallyTrustedCallersExample {

§

}

Thực tế, tất cả các đặc tính toàn cục đều nằm trong một file độc lập với phần mã
lệnh còn lại của ứng dụng. Microsoft Visual Studio .NET
sử dụng cách tiếp cận
này: tạo một file có tên là AssemblyInfo.cs
để chứa tất cả các đặc tính toàn 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.