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

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

Причина

Для прозрачного метода требуется или другое SecurityAction требование безопасности.

Примечание.

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

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

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

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

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

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

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

Пример

В следующем примере правило запускается в методе, так как метод является прозрачным и помечается с помощью LinkDemand PermissionSet , содержащего объект SecurityAction.

using System;
using System.Security.Permissions;

namespace TransparencyWarningsDemo
{

    public class TransparentMethodsProtectedWithLinkDemandsClass
    {
        // CA2142 violation - transparent code using a LinkDemand.  This can be fixed by removing the LinkDemand
        // from the method.
        [PermissionSet(SecurityAction.LinkDemand, Unrestricted = true)]
        public void TransparentMethod()
        {
        }
    }
}

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