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;
}
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per