CA2143 : Les méthodes transparentes ne doivent pas utiliser de demandes de sécuritéCA2143: Transparent methods should not use security demands

TypeNameTypeName TransparentMethodsShouldNotDemandTransparentMethodsShouldNotDemand
CheckIdCheckId CA2143CA2143
CategoryCategory Microsoft.SecurityMicrosoft.Security
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Une méthode ou type de transparent est marquée de façon déclarative avec une System.Security.Permissions.SecurityAction .Demand à la demande ou les appels de méthode le System.Security.CodeAccessPermission.Demand (méthode).A tranparent type or method is declaratively marked with a System.Security.Permissions.SecurityAction.Demand demand or the method calls the System.Security.CodeAccessPermission.Demand method.

Description de la règleRule description

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. 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.Security transparent code should use full demands to make security decisions and safe-critical code should not rely on transparent code to have made the full demand. Tout code qui effectue des vérifications de sécurité, telles que des demandes de sécurité doit être critique de sécurité à la place.Any code that performs security checks, such as security demands, should be safe-critical instead.

Comment corriger les violationsHow to fix violations

En règle générale, pour corriger une violation de cette règle, marquez la méthode avec le SecuritySafeCriticalAttribute attribut.In general, to fix a violation of this rule, mark the method with the SecuritySafeCriticalAttribute attribute. Vous pouvez également supprimer la demande.You can also remove the demand.

Quand supprimer les avertissementsWhen to suppress warnings

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

ExempleExample

La règle de fichiers sur le code suivant, car une méthode transparente effectue une demande de sécurité déclarative.The rule files on the following code because a transparent method makes a declarative security demand.

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 aussiSee also

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