Compartilhar via


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