0

我们在 Azure 中有一个辅助角色,Process.Start用于启动后台进程(托管我们需要运行的本机应用程序)

由于链接需求,FxCop 给了我一大堆 CA2122错误。当我尝试添加此属性时:

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

然后我开始改用 CA2135,解决方案似乎是添加 SecurityCritical 属性。

但后来我又得到了 CA2122。

这些事情中的任何一个都有问题吗?它们在什么情况下会出现,我如何确定我没有引入安全问题?

4

1 回答 1

1

SecurityCritical 应该执行与 LinkDemand 等效的角色以获得完全信任:

SecurityCriticalAttribute 相当于完全信任的链接需求。标有 SecurityCriticalAttribute 的类型或成员只能由完全受信任的代码调用;它不必要求特定的权限。它不能被部分受信任的代码调用。

因此,我建议添加 SecurityCritical(以满足 CA2135 的需求)并抑制 CA2122,这可能只是微软忘记在他们的代码分析中考虑他们的新解决方案。

CA2122 的目标是确保该方法...

不再提供对链接需求保护成员的不安全访问。

一旦添加了 SecurityCritical 就不是这种情况了(这确保了该成员只能由完全受信任的代码调用),因此第二个 CA2122 是误报。

于 2012-10-30T16:15:00.377 回答