Поделиться через


CA2130: константы критической безопасности должны быть прозрачными

TypeName

ConstantsShouldBeTransparent

CheckId

CA2130

Категория

Microsoft.Security

Критическое изменение

Критическое изменение

Причина

Константное поле или элемент перечисления помечается атрибутом SecurityCriticalAttribute.

Описание правила

Принудительная прозрачность не применяется для постоянных значений, чтобы во время выполнения не требовалась подстановка значений.Константные поля должны быть прозрачными для системы безопасности, чтобы анализаторы кода не предполагали, что прозрачный для системы безопасности код не может получить доступ к константе.

Устранение нарушений

Чтобы устранить нарушение данного правила, удалите атрибут SecurityCritical из поля или значения.

Отключение предупреждений

Для этого правила отключать вывод предупреждений не следует.

Пример

В следующих примерах данное предупреждение вызывается значением перечисления EnumWithCriticalValues.CriticalEnumValue и константой CriticalConstant.Чтобы устранить проблемы, удалите атрибут [SecurityCritical], чтобы сделать их прозрачными для безопасности.

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