CA2143: прозрачные методы не должны использовать требования безопасности

Товар Значение
Идентификатор правила CA2143
Категория Microsoft.Security
Критическое изменение Критическое

Причина

Прозрачный тип или метод декларативно помечается запросом System.Security.Permissions.SecurityAction.Demand или метод вызывает System.Security.CodeAccessPermission.Demand метод.

Примечание.

Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".

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

Прозрачный для системы безопасности код не должен отвечать за проверку безопасности операции и поэтому не должен требовать разрешений. Прозрачный для системы безопасности код должен использовать полные требования для принятия решений по безопасности, и критичный в плане безопасности код не должен полагаться на прозрачный код, чтобы создать полное требование. Вместо этого любой код, выполняющий проверка безопасности, например требования к безопасности, должен быть безопасным.

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

Как правило, чтобы устранить нарушение этого правила, пометьте метод атрибутом SecuritySafeCriticalAttribute . Вы также можете удалить запрос.

Когда лучше отключить предупреждения

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

Пример

Файлы правил в следующем коде, так как прозрачный метод делает декларативный спрос на безопасность.

using System;
using System.Security;
using System.Security.Permissions;

namespace TransparencyWarningsDemo
{

    public class TransparentMethodDemandClass
    {
        // CA2142 violation - transparent code using a Demand.  This can be fixed by making the method safe critical.
        [PermissionSet(SecurityAction.Demand, Unrestricted = true)]
        public void TransparentMethod()
        {
        }
    }
}

См. также

CA2142: прозрачный код не должен быть защищен с помощью требований LinkDemand