CA2130: Las constantes críticas para la seguridad deben ser transparentes
Nombre de tipo |
ConstantsShouldBeTransparent |
Identificador de comprobación |
CA2130 |
Categoría |
Microsoft.Security |
Cambio problemático |
Sí |
Motivo
Un campo constante o un miembro de enumeración se marca con SecurityCriticalAttribute.
Descripción de la regla
El cumplimiento de la transparencia no se exige para los valores constantes porque los compiladores alinean los valores constantes para que no se requiera ninguna búsqueda en tiempo de ejecución.Los campos constantes deberían ser transparentes en seguridad de modo que los revisores del código no supongan que el código transparente no puede tener acceso a la constante.
Cómo corregir infracciones
Para corregir una infracción de esta regla, quite el atributo SecurityCritical del campo o valor.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
En los ejemplos siguientes, el valor de enumeración EnumWithCriticalValues.CriticalEnumValue y la constante CriticalConstant producen esta advertencia.Para corregir los problemas, quite el atributo [SecurityCritical] para que tengan seguridad 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;
}
}