CA2130: Le costanti SecurityCritical devono essere Transparent
TypeName |
ConstantsShouldBeTransparent |
CheckId |
CA2130 |
Category |
Microsoft.Security |
Breaking Change |
Breaking |
Causa
Un campo costante o un membro di enumerazione è contrassegnato da SecurityCriticalAttribute.
Descrizione della 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 valore.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Negli esempi seguenti, il valore di enumerazione EnumWithCriticalValues.CriticalEnumValue e la costante CriticalConstant generano questo avviso. Per correggere i problemi, rimuovere l'attributo [SecurityCritical] per renderlo SecurityTransparent.
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;
}
}