我们在Azure中有一个辅助角色,它使用Process.Start
启动后台进程(托管我们需要运行的本机应用程序)
由于链接需求,FxCop给我一大堆CA2122错误。当我尝试添加此属性时:
[PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust")]
然后我开始得到CA2135,其解决方案似乎是添加SecurityCritical属性。
然后我再次获得CA2122。
这些都是问题吗?在什么情况下他们可以,我怎么能确定我没有引入安全问题?
答案 0 :(得分:1)
SecurityCritical应该为完全信任执行与LinkDemand相同的角色:
SecurityCriticalAttribute相当于完整的链接需求 信任。标有SecurityCriticalAttribute的类型或成员可以 只能由完全信任的代码调用;它没有必要 特定权限。它不能被部分受信任的代码调用。
Ergo,我建议添加SecurityCritical(以满足CA2135的需求)并抑制CA2122,这可能只是微软忘记在代码分析中考虑他们的新解决方案。
CA2122的目标是确保方法......
不再提供对受需求保护的链接的不安全访问 构件。
一旦添加了SecurityCritical(确保成员只能由完全受信任的代码调用),情况就不是这样了,所以第二个CA2122是误报。