C#security - LinkDemand或SecurityCritical还是有什么解释?

时间:2012-05-01 11:15:49

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

我已对我的应用程序运行安全检查,并收到以下警告:

  

'Parser.GenerateJeffpReport(string)'调用'Process.Start()'   它有一个LinkDemand。通过进行此调用,'Process.Start()'是   间接暴露给用户代码。查看以下调用堆栈   可能会暴露一种规避安全保护的方法:

我用Google搜索了一下,发现了这个问题:

what does this security warning mean (.Net Process class)?

我尝试按照推荐的答案进行操作,即设置我的方法:

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

但是,我收到了以下警告:

  

Microsoft.Security:'Parser.ParseJeff(string)'受保护   “PermissionSetAttribute”的LinkDemand。在2级安全规则中   设置,它应该受到安全关键的保护。   删除LinkDemand并标记'Parser.ParseJeff(string)'安全性   关键的。

我该怎么办?无论如何,这一切的含义是什么?为什么这是一个安全问题?我没有在主题上找到微软文档。

2 个答案:

答案 0 :(得分:2)

替换

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

[SecurityCritical]

  

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

答案 1 :(得分:0)

您也可以使用[PermissionSetAttribute(SecurityAction.Demand, Name="FullTrust")]