CA2133 : Les délégués doivent lier les méthodes avec une transparence cohérente
Élément | Valeur |
---|---|
ID de la règle | CA2133 |
Category | Microsoft.Security |
Modification avec rupture | Rupture |
Notes
Cet avertissement s’applique uniquement au code qui exécute CoreCLR (la version du CLR spécifique aux applications web Silverlight).
Cause
Cet avertissement se déclenche sur une méthode qui lie un délégué marqué à l’aide de SecurityCriticalAttribute à une méthode transparente ou marquée à l’aide de SecuritySafeCriticalAttribute. L’avertissement déclenche également une méthode qui lie un délégué transparent ou critique sécurisé à une méthode critique.
Notes
Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.
Description de la règle
Les types de délégués et les méthodes auxquelles ils se lient doivent avoir une transparence cohérente. Les délégués transparents et critiques de sécurité ne peuvent se lier qu’à d’autres méthodes transparentes ou critiques sécurisées. De même, les délégués critiques peuvent uniquement se lier à des méthodes critiques. Ces règles de liaison garantissent que le seul code qui peut appeler une méthode via un délégué a également appelé la même méthode directement. Par exemple, les règles de liaison empêchent le code transparent d’appeler du code critique directement via un délégué transparent.
Comment corriger les violations
Pour corriger une violation de cet avertissement, modifiez la transparence du délégué ou de la méthode qu’il lie afin que la transparence des deux soit équivalente.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Code
using System;
using System.Security;
namespace TransparencyWarningsDemo
{
public delegate void TransparentDelegate();
[SecurityCritical]
public delegate void CriticalDelegate();
public class TransparentType
{
void DelegateBinder()
{
// CA2133 violation - binding a transparent delegate to a critical method
TransparentDelegate td = new TransparentDelegate(CriticalTarget);
// CA2133 violation - binding a critical delegate to a transparent method
CriticalDelegate cd = new CriticalDelegate(TransparentTarget);
}
[SecurityCritical]
void CriticalTarget() { }
void TransparentTarget() { }
}
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour