Partager via


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

Élément Valeur
ID de la règle CA2142
Category Microsoft.Security
Modification avec rupture Rupture

Cause

Une méthode transparente nécessite SecurityAction ou toute autre demande de sécurité.

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

Description de la règle

Cette règle se déclenche sur les méthodes transparentes qui nécessitent des LinkDemands pour y accéder. 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. Dans la mesure où les méthodes transparentes sont censées être neutres au niveau de la sécurité, elles ne doivent pas prendre de décisions relatives à la sécurité. De plus, le code critique sécurisé, qui prend les décisions de sécurité, ne doit pas s’appuyer sur du code transparent pour prendre ce genre de décision.

Comment corriger les violations

Pour corriger toute 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 effectue des vérifications de sécurité, par exemple des demandes de sécurité.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

Dans l’exemple suivant, la règle se déclenche sur la méthode, car celle-ci est transparente et est marquée avec un LinkDemand PermissionSet qui contient 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.