共用方式為


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;
    }
}