Stu*_*ler 3 c# vb.net security fxcop code-access-security
在应用程序中,我们可以将报告输出为csv文件并加载它,类似于以下代码:
Process.Start("C:\MyReport.csv") ' Not real path
Run Code Online (Sandbox Code Playgroud)
运行代码分析时,会产生以下错误:
CA2122不要将具有链接需求"Form.Function(Definition)"调用的方法间接暴露给具有LinkDemand的"Process.Start(String)".通过进行此调用,'Process.Start(String)'间接暴露给用户代码
我已经看到用某个地方来标记装配SecurityTransparentAttribute,这是否只是压制了消息?如果是这样,这不是我想要的.是否有另一种打开文件的方法可以绕过这个消息而不会抑制它?如果我现在不能在其他任何地方使用Excel,我最好还是避免使用Excel自动化.
想法?
我今天偶然发现了同样的问题,并认为以下答案对其他人如此有用是如此.
所以基本上,我的代码是在资源管理器中打开一个给定的目录路径,如下所示
public static void OpenDirectoryPath(string directoryPath)
{
if (Directory.Exists(directoryPath))
{
Process.Start(directoryPath);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码产生了以下错误
CA2122:Microsoft.Security:'Helper.OpenDirectoryPath(string)'调用具有LinkDemand的'Process.Start(string)'.通过进行此调用,'Process.Start(string)'间接暴露给用户代码.查看以下可能提供绕过安全保护的方法的调用堆栈:
要问的问题是,你真的希望这种方法公开吗?就我而言,答案是"不".将方法更改为内部解决了问题.
internal static void OpenDirectoryPath(string directoryPath)
{
if (Directory.Exists(directoryPath))
{
Process.Start(directoryPath);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4886 次 |
| 最近记录: |