CA2130:安全性關鍵常數應該是透明的
型別名稱 |
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;
}
}