2010-05-26 35 views
15

Trên trang MSDN FileSystemWatcher Class, nó bao gồm một ví dụ với các thuộc tính lớp sau:Mục đích của thuộc tính PermissionSet trong ví dụ lớp MSDN FileSystemWatcher là gì?

[PermissionSet(SecurityAction.Demand, Name="FullTrust")] 

mục đích của việc này là gì? Khi nào nên bao gồm hoặc không bao gồm?

Các FileSystemWatcher Lớp trang trợ giúp là ở đây: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

Trả lời

15

Các FileSystemWatcher lớp có nhu cầu liên kết cho phép CAS không hạn chế. Điều này có nghĩa là nó sẽ xác minh rằng người gọi trực tiếp của nó (tức là: mã của bạn nếu bạn đang tiêu thụ trực tiếp lớp) có quyền hạn chế.

Thật không may, việc sử dụng yêu cầu liên kết sẽ mở ra các lỗ hổng bảo mật tiềm ẩn vì quyền của người gọi gián tiếp (ví dụ: mã gọi mã của bạn) không được xác minh bởi nhu cầu liên kết. Điều này có nghĩa là một người gọi gián tiếp với các quyền hạn chế có thể có khả năng thao tác mã đáng tin cậy của bạn để làm một cái gì đó bất chính thay mặt nó rằng nếu không nó sẽ không có quyền để thực hiện.

Một trong những cách để ngăn chặn cuộc tấn công của loại này là áp dụng một yêu cầu đầy đủ cho cùng sự cho phép đối với bất kỳ mã nào tiêu thụ loại hoặc thành viên có nhu cầu liên kết. Điều này sẽ đảm bảo rằng bất kỳ người gọi gián tiếp nào sẽ phải chịu cùng một nhu cầu cấp phép, do đó đảm bảo rằng họ không thể thực hiện bất kỳ điều gì thông qua mã của bạn mà họ sẽ không thể tự thực hiện được. Ứng dụng của một yêu cầu đầy đủ của loại này là những gì đang được hiển thị trong mã mẫu MSDN cho FileSystemWatcher.

+0

Tôi chưa nghĩ mình đã hiểu rõ điều đó. Ví dụ này chạy tốt mà không có dòng 'PermissionSet ...'. Làm thế nào nó giúp mã để có nó trong? Ngoài ra 'FullTrust' có nghĩa là gì? Admin privlidges trên máy hoặc chỉ truy cập đầy đủ vào tập tin/thư mục trong câu hỏi? – Jeff

+4

Thuộc tính không giúp mã của bạn chạy. Thay vào đó, nó giúp ngăn chặn nó chạy khi nó không nên. "FullTrust" đề cập đến quyền truy cập mã không giới hạn. Điều này không liên quan đến các quyền được cấp cho tài khoản của người dùng. Mã truy cập bảo mật là một lớp bảo mật bổ sung được cung cấp bởi. NET cho phép một để kiểm soát quyền cấp cho chạy mã. Để biết phần giới thiệu, hãy xem http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx. –

Các vấn đề liên quan