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