Wim*_*nen 3 c# permissions fxcop
我在班级酒吧有一个房产Foo:
public int Foo
{
get
{
return GetFoo();
}
set
{
SetFoo(value);
}
}
Run Code Online (Sandbox Code Playgroud)
双方GetFoo
并SetFoo
都装饰有:
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
Run Code Online (Sandbox Code Playgroud)
结果,FxCop正确地抱怨Foo属性(或者更确切地说是它的隐式getter和setter方法)没有相同的LinkDemand:
CA2122:Microsoft.Security:'Bar.Foo.get()'调用具有LinkDemand的'Bar.GetFoo()'.通过进行此调用,'Bar.GetFoo()'间接暴露给用户代码.查看以下可能提供绕过安全保护的方法的调用堆栈:
但是,当我尝试将相同的SecurityPermission
属性应用于属性以修复此警告时,事实证明属性不是此属性的有效目标.
如何正确修复此FxCop警告?
在阅读了你的反应之后,我很快就猜到了范宁的建议并不适用于我的情况.我现在看一下Demand vs. LinkDemand文章,并尝试使用Demand.
您应该能够直接将属性应用于getter和setter,即:
public int Foo
{
[SecurityPermission(...)]
get
{
return GetFoo();
}
[SecurityPermission(...)]
set
{
SetFoo(value);
}
}
Run Code Online (Sandbox Code Playgroud)