CA2130: 보안 위험 상수는 투명해야 합니다.
TypeName |
ConstantsShouldBeTransparent |
CheckId |
CA2130 |
범주 |
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;
}
}