Partager via


CA2142 : Le code transparent ne doit pas être protégé avec des LinkDemands

TypeName

TransparentMethodsShouldNotBeProtectedWithLinkDemands

CheckId

CA2142

Catégorie

Microsoft.Security

Modification avec rupture

Oui

Cause

Une méthode transparente requiert un LinkDemand ou une autre demande de sécurité.

Description de la règle

Cette règle se déclenche sur les méthodes transparentes qui requièrent l'accès de LinkDemands.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.Étant donné que les méthodes transparentes sont supposées être neutre de sécurité, elles ne doivent pas prendre de décisions de sécurité.En outre, le code critique sécurisé, qui prend des décisions de sécurité ne doit pas compter sur du code transparent pour avoir pris une telle décision précédemment.

Comment corriger les violations

Pour résoudre une violation de cette règle, supprimez la demande de liaison sur la méthode transparente ou marquez la méthode avec l'attribut SecuritySafeCriticalAttribute si elle exécute des vérifications de sécurité, telles que les demandes de sécurité.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

Dans l'exemple suivant, la règle déclenche la méthode parce que la méthode est transparente et est marquée avec un LinkDemand PermissionSet qui contient un LinkDemand.

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.