CA2130: Las constantes críticas para la seguridad deben ser transparentes
Elemento | Valor |
---|---|
RuleId | CA2130 |
Category | Microsoft.Security |
Cambio importante | Problemático |
Causa
Un campo constante o un miembro de enumeración se marca con SecurityCriticalAttribute.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
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 las advertencias
No suprima las advertencias de esta regla.
Ejemplo
En los ejemplos siguientes, el valor de enumeración EnumWithCriticalValues.CriticalEnumValue
y la constante CriticalConstant
generan esta advertencia. Para corregir los problemas, quite el atributo [SecurityCritical
] para que la seguridad sea 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;
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de