CA2142 : Le code transparent ne doit pas être protégé avec des LinkDemandsCA2142: Transparent code should not be protected with LinkDemands

TypeNameTypeName TransparentMethodsShouldNotBeProtectedWithLinkDemandsTransparentMethodsShouldNotBeProtectedWithLinkDemands
CheckIdCheckId CA2142CA2142
CategoryCategory Microsoft.SecurityMicrosoft.Security
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Une méthode transparente requiert un SecurityAction ou autres à la demande de sécurité.A transparent method requires a SecurityAction or other security demand.

Description de la règleRule Description

Cette règle se déclenche sur les méthodes transparentes qui requièrent l'accès de LinkDemands.This rule fires on transparent methods which require LinkDemands to access them. Le code transparent de sécurité ne doit pas être responsable de la vérification de la sécurité d’une opération. Par conséquent, il ne doit pas demander d’autorisations.Security transparent code should not be responsible for verifying the security of an operation, and therefore should not demand permissions. Étant donné que les méthodes transparentes sont supposées pour être neutre de sécurité, ils ne doivent pas être décisions de sécurité.Because transparent methods are supposed to be security neutral, they should not be making any security decisions. En outre, code critique sécurisé, qui à des décisions de sécurité, ne doit pas compter sur une telle décision précédemment appliquées au code transparent.Additionally, safe critical code, which does make security decisions, should not be relying on transparent code to have previously made such a decision.

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle, supprimez la demande de liaison sur la méthode transparente ou marquez la méthode avec SecuritySafeCriticalAttribute attribut si elle exécute sécurité vérifie, telles que les demandes de sécurité.To fix a violation of this rule, remove the link demand on the transparent method or mark the method with SecuritySafeCriticalAttribute attribute if it is performing security checks, such as security demands.

Quand supprimer les avertissementsWhen to Suppress Warnings

Ne supprimez aucun avertissement de cette règle.Do not suppress a warning from this rule.

ExempleExample

Dans l’exemple suivant, la règle déclenche la méthode, car la méthode est transparente et est marquée avec un LinkDemand PermissionSet qui contient un SecurityAction.In the following example, the rule fires on the method because the method is transparent and is marked with a LinkDemand PermissionSet that contains an 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()
        {
        }
    }
}

Ne supprimez aucun avertissement de cette règle.Do not suppress a warning from this rule.