Compartilhar via


CA2130: as constantes críticas de segurança devem ser transparentes

TypeName

ConstantsShouldBeTransparent

CheckId

CA2130

Categoria

Microsoft.Security

Alteração Significativa

Quebra

Causa

Um campo constante ou um membro de enumeração são marcados com SecurityCriticalAttribute.

Descrição da Regra

A imposição de transparência não é imposta para valores constantes como valores constantes embutidos dos compiladores de modo que nenhuma pesquisa é necessária em tempo de execução.Os campos constantes devem ser segurança transparente de forma que os revisores de código não assume que o código transparente não pode acessar a constante.

Como Corrigir Violações

Para corrigir uma violação desta regra, remova o atributo de SecurityCritical do campo ou valor.

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

Nos exemplos seguintes, o valor EnumWithCriticalValues.CriticalEnumValue de enum e CriticalConstant constante gerenciem esse aviso.Para corrigir problemas, remova o atributo deSecurityCritical[] para fazer a eles a 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;
    }
}