SecurityPermission和SecurityPermissionFlag.SkipVerification的后果

时间:2013-02-27 19:28:46

标签: c# .net security .net-4.5 code-access-security

在MSDN文档中,SecurityPermissionFlag.SkipVerification说:

  

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

     

这是一个强大的权限,只能授予高度权限   可信代码。

     

与堆栈修饰符动态使用时,此标志无效   例如Deny,Assert和PermitOnly。

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

对于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>(...);
}

Castle Windsor 程序集在AppDomain中完全受信任。

所以问题是......

如果我相信我只相信Castle Windsor的代码并且不再支持,我错了吗?

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

从我的观点来看,由于温莎城堡不做危险的事情,使用整个旗帜是安全的

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

如果您可以完全依赖在关键部分内执行的代码,则可以将其视为安全代码,因此Castle Windsor(或任何其他可信代码)没有问题。

相关问题