MSDN FileSystemWatcher类示例中PermissionSet属性的目的是什么?

26

在 .NET Core 2.x+ 中,根据 https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/5.0/code-access-security-apis-obsolete 的说法,代码访问安全属性不起作用。 - C.M.
1个回答

23
FileSystemWatcher需要无限制的CAS权限链接支持。这意味着,它将验证其直接调用者(即,如果您直接使用该类,则为您的代码)是否具有无限制的权限。
不幸的是,使用链接需求会打开潜在的安全漏洞,因为间接调用者(即调用您代码的代码)的权限没有通过链接需求进行验证。因此,具有受限权限的间接调用者可能能够操纵您高度信任的代码以完成它原本没有权限完成的危险操作。 防止此类攻击的一种方法是对使用具有链接需求的类型或成员的任何代码应用您自己的完全需求相同的权限。这将确保任何间接调用者都将受到相同的权限需求约束,从而确保它们不能通过您的代码执行任何超出其自身权限的操作。MSDN中的FileSystemWatcher示例代码演示了这种全需求的应用。

2
我认为我还没有完全理解它。示例在没有“PermissionSet…”行的情况下运行良好。它如何帮助代码?另外,“FullTrust”是什么意思?机器上的管理员权限还是对所涉及的文件/目录的完全访问权限? - Jeff
8
该属性并不帮助您的代码运行,而是帮助防止在不应该运行时运行代码。"FullTrust" 指的是无限制的代码访问安全权限。这与授予用户帐户的权限无关。代码访问安全是 .NET 提供的附加安全层,允许您控制运行代码所授予的权限。有关介绍,请参见 http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx。 - Nicole Calinoiu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接