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.