Partager via


CA2143 : Les méthodes transparentes ne doivent pas utiliser de demandes de sécurité

TypeName

TransparentMethodsShouldNotDemand

CheckId

CA2143

Catégorie

Microsoft.Security

Modification avec rupture

Oui

Cause

Un type tranparent ou une méthode est marquée de façon déclarative avec une demande System.Security.Permissions.SecurityAction.Demand ou la méthode appelle la méthode CodeAccessPermission.Demand.

Description de la règle

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. Le code transparent de sécurité doit utiliser des demandes complètes pour prendre des décisions de sécurité et le code critique sécurisé ne doit pas dépendre du code transparent pour l'exécution de ces demandes. Tout code qui exécute des vérifications de la sécurité, telles que les demandes de sécurité, doit être critique de sécurité.

Comment corriger les violations

En général, pour résoudre une violation de cette règle, marquez la méthode avec l'attribut SecuritySafeCriticalAttribute. Vous pouvez également supprimer la demande.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

La règle se déclenche sur le code suivant car une méthode transparente effectue une demande de sécurité déclarative.

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()
        {
        }
    }
}

Voir aussi

Référence

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