Condividi tramite


CA2130: Le costanti SecurityCritical devono essere Transparent

Articolo Valore
ID regola CA2130
Category Microsoft.Security
Modifica Interruzione

Causa

Un campo costante o un membro di enumerazione è contrassegnato con .SecurityCriticalAttribute

Nota

Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.

Descrizione regola

L'imposizione della trasparenza non viene applicata ai valori costanti perché i compilatori rendono inline valori costanti in modo che non sia richiesta alcuna ricerca in fase di esecuzione. I campi costanti devono essere trasparenti per la sicurezza in modo che i revisori del codice non suppongano che il codice trasparente non possa accedere alla costante.

Come correggere le violazioni

Per correggere una violazione di questa regola, rimuovere l'attributo SecurityCritical dal campo o dal valore.

Quando eliminare gli avvisi

Non escludere un avviso da questa regola.

Esempio

Negli esempi seguenti il valore EnumWithCriticalValues.CriticalEnumValue di enumerazione e la costante CriticalConstant generano questo avviso. Per risolvere i problemi, rimuovere l'attributo [SecurityCritical] per renderli trasparenti per la sicurezza.

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