CA2130:安全关键常量应是透明的
适用范围:Visual Studio
Visual Studio for Mac
Visual Studio Code
项 | “值” |
---|---|
RuleId | CA2130 |
Category | Microsoft.Security |
重大更改 | 重大 |
原因
常数字段或枚举成员用 SecurityCriticalAttribute 进行标记。
注意
此规则已被弃用。 有关详细信息,请参阅已弃用的规则。
规则说明
未对常数值实施透明强制,因为编译器内联常数值以便在运行时不需要查找。 常数字段应为安全透明的,以便代码评审阅者不会假定透明代码不能访问常数。
如何解决冲突
若要解决此规则的冲突,请从字段或值中删除 SecurityCritical 属性。
何时禁止显示警告
不禁止显示此规则发出的警告。
示例
在下面的示例中,枚举值 EnumWithCriticalValues.CriticalEnumValue
和常数 CriticalConstant
会引发此警告。 若要解决这些问题,请删除 [SecurityCritical
] 属性,使其安全透明。
using System;
using System.Security;
//[assembly: SecurityRules(SecurityRuleSet.Level2)]
//[assembly: AllowPartiallyTrustedCallers]
namespace TransparencyWarningsDemo
{
public enum EnumWithCriticalValues
{
TransparentEnumValue,
// CA2130 violation
[SecurityCritical]
CriticalEnumValue
}
public class ClassWithCriticalConstant
{
// CA2130 violation
[SecurityCritical]
public const int CriticalConstant = 21;
}
}