Les assemblys Security Transparent ne doivent pas contenir de code critique de sécurité
Mise à jour : novembre 2007
TypeName |
SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode |
CheckId |
CA2127 |
Catégorie |
Microsoft.Security |
Modification avec rupture |
Oui |
Cause
Le code critique ne peut pas apparaître dans un assembly entièrement transparent.
Description de la règle
Cette règle analyse les assemblys entièrement transparents pour toutes les annotations SecurityCritical au niveau du type, du champ et de la méthode. Cette règle est utile car elle indique le code qui existe dans un assembly entièrement transparent. Le code d'un assembly entièrement transparent déclenche une exception de sécurité ou un comportement inattendu au moment de l'exécution.
La version .NET Framework 2.0 a introduit une fonctionnalité appelée transparence. Les méthodes, les champs, les interfaces, les classes et les types individuels peuvent être transparents ou critiques.
Le code transparent n'est pas autorisé à élever les privilèges de sécurité. Par conséquent, toutes les autorisations accordées ou sollicitées sont automatiquement passées du code à l'appelant ou à l'AppDomain d'hôte. Les exemples d'"élévations" incluent les assertions, les LinkDemands, l'attribut SuppressUnmanagedCode et le code "unsafe".
Un assembly peut être entièrement transparent, entièrement critique ou mi-transparent, mi-critique.
Pour marquer un assembly comme entièrement transparent, ajoutez l'attribut de niveau assembly :
[assembly:System.Security.SecurityTransparent]
Pour marquer un assembly comme entièrement critique, ajoutez l'attribut de niveau assembly :
[assembly:System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)]
Pour marquer un assembly comme mi-transparent, mi critique, ajoutez l'attribut de niveau assembly :
[assembly:System.Security.SecurityCritical]
Le code transparent ne peut pas apparaître dans un assembly entièrement critique et le code critique ne peut pas apparaître dans un assembly entièrement transparent.
Comment corriger les violations
Pour résoudre le problème, marquez l'assembly comme mi-transparent, mi-critique ou supprimez l'attribut SecurityCritical du code signalé.
Quand supprimer les avertissements
Ne supprimez aucun message de cette règle.