CA2130: Constantes críticas de segurança devem ser transparentes
TypeName |
ConstantsShouldBeTransparent |
CheckId |
CA2130 |
<strong>Categoria</strong> |
Microsoft.Security |
Alteração significativa |
Quebrando |
Causa
Um campo constante ou um membro de enumeração é marcado com o SecurityCriticalAttribute.
Descrição da regra
Aplicação de transparência não é imposta para valores constantes porque valores de constante embutido de compiladores para que nenhuma pesquisa é necessária em tempo de execução.Campos constantes devem ser transparente de segurança para que os revisores de código não assumem que o código transparent não pode acessar a constante.
Como corrigir violações
Para corrigir uma violação desta regra, remova o atributo SecurityCritical do campo ou valor.
Quando suprimir avisos
Não suprimir um aviso da regra.
Exemplo
Nos exemplos a seguir, o valor de enumeração EnumWithCriticalValues.CriticalEnumValue e a constante CriticalConstant elevar este aviso.Para corrigir os problemas, remova o SecurityCritical atributo para torná-los segurança transparente.
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;
}
}