SecurityPermission和SecurityPermissionFlag.SkipVerification的后

本文关键字:的后 SkipVerification SecurityPermissionFlag SecurityPermission | 更新日期: 2023-09-27 18:01:21

在MSDN文档中,SecurityPermissionFlag。SkipVerification说:

跳过此程序集中代码的验证的能力。代码是如果授予此权限,则可以运行不可验证。

这是一个强大的权限,应该只授予高度受信任的代码。

此标志在与堆栈修饰符动态使用时不起作用如Deny、Assert、PermitOnly等。

我目前正在开发的一些项目需要我的SkipVerificationFlag。具体的例子是一些自定义类使用Castle Windsor创建控制反转组件的实例,因为调用整个方法的程序集不是完全可信的

这可能是c#中SkipVerification方法的伪代码:

[SecuritySafeCritical]
[ReflectionPermission(SecurityAction.Assert, Unrestricted = true)]
[SecurityPermission(SecurityAction.Assert, SkipVerification = true)]
public override TComponent Resolve<TComponent>(string id = null, bool release = true, object argumentsAsAnonymousObject = null)
{
     // Some stuff...
     windsorContainer.Resolve<TComponent>(...);
}

温莎城堡AppDomain中是完全信任的。

问题是。

如果我相信我只是相信温莎城堡的代码,而不是更多,我错了吗?

上述伪代码的消费者/调用者处于不受信任(非完全信任)的AppDomain中。或者换句话说:使用该门的第三方代码是安全透明的。

在我看来,因为温莎城堡不做危险的事情,所以用整面旗帜来代表它是安全的

我的决定在安全性方面的后果是什么?

谢谢。

SecurityPermission和SecurityPermissionFlag.SkipVerification的后

据我所知,并与可用的信息,似乎没有断言SkipValidation的其他后果。

如果你可以完全依赖在临界区内执行的代码,它可以被认为是安全代码,因此Castle Windsor(或任何其他可信代码)没有问题。